Многие из приведенных здесь ответов являются неправильными или неполными, поэтому я хотел добавить свой ответ здесь в надежде, что он может пролить свет на некоторые вопросы.
Во-первых, нет ничего плохого в изменении высоты панели навигации. Люди, комментирующие, что это не разрешено, или идут вразрез с руководящими принципами, просто неправильно понимают эти руководящие принципы.
Возможность настройки или изменения панели навигации по умолчанию, которая используется внутри UINavigationController, была частью SDK начиная с iOS 5.
- (instancetype)initWithNavigationBarClass:(Class)navigationBarClass toolbarClass:(Class)toolbarClass NS_AVAILABLE_IOS(5_0);
Самый простой способ изменить высоту строки состояния - использовать этот метод при инициализации контроллера навигации, передавая пользовательский подкласс UINavigationBar.
TestViewController *t = [[TestViewController alloc] init];
UINavigationController *nav = [[UINavigationController alloc] initWithNavigationBarClass:[MyNavigationBar class] toolbarClass:[UIToolbar class]];
[nav setViewControllers:@[t]];
[self.window setRootViewController:nav];
[self.window makeKeyAndVisible];
Где пример такого пользовательского класса UINavigationBar может выглядеть так:
@interface MyNavigationBar : UINavigationBar
@end
@implementation MyNavigationBar
- (CGSize)sizeThatFits:(CGSize)size
{
CGSize s = [super sizeThatFits:size];
s.height = 90; // Or some other height
return s;
}
@end