Страницы

Поиск по вопросам

вторник, 10 декабря 2019 г.

Как увеличить высоту navigation bar в iOS11?

#ios #objective_c #navigationbar

До iOS 11 для изменения высоты navBar'a отлично работало такое решение:

const CGFloat height = 80;
[self.navigationController.navigationBar setFrame:CGRectMake(0, 0,
self.view.frame.size.width,height)];


https://stackoverflow.com/a/34850109

но в Xcode 9 + iOS 11, оно больше не работает
    


Ответы

Ответ 1



Создайте класс-наследник от UINavigationBar. Переопределите метод layoutSubViews c нужной вам высотой: Objective-C: - (void)layoutSubviews { [super layoutSubviews]; CGFloat navBarHeigh = 100; CGFloat heightDelta = (([UIScreen mainScreen].nativeBounds.size.height == 2436) ? 44.0 : 20.0); for (UIView *subview in self.subviews) { if ([NSStringFromClass([subview class]) containsString:@"BarBackground"]) { CGRect subViewFrame = subview.frame; subViewFrame.origin.y = -heightDelta; subViewFrame.size.height = navBarHeigh + heightDelta; [subview setFrame: subViewFrame]; } } } Swift: override func layoutSubviews() { super.layoutSubviews() let navBarHeight: CGFloat = 100 let heightDelta: CGFloat = UIScreen.main.nativeBounds.height == 2436 ? 44 : 20 for subview in subviews { if String(describing: subview).contains("BarBackground") { subview.frame.origin.y = -heightDelta subview.frame.size.height = navBarHeight + heightDelta } } } Укажите его для UINavigationController: Результат:

Комментариев нет:

Отправить комментарий