如何更改UINavigationBar的高度

这个问题使我瘫痪了一天。 我需要修改UINavigationBar的高度。

UINavigationController就像这样在AppDelegate中创build。

self.navigationController = [[UINavigationController alloc] initWithRootViewController:mainController]; [self.window addSubview:self.navigationController.view]; [self.window makeKeyAndVisible]; 

如果我添加[self.navigationController.navigationBar setFrame:newFrame] viewDidAppear像下面的代码,导航栏的高度更改和坚持。

 - (void)viewWilAppear:(BOOL)animated { [super viewWillAppear:animated]; CGRect newFrame = CGRectMake(0, 0, 320, 100); [self.navigationController.navigationBar setFrame:newFrame] } 

但是 ,如果我这样做,实际上可以看到框架从原始的44px到100px的高度在视图加载的瞬间,这是非常烦人的。

我已经尝试添加[navBar setFrame:] viewDidloadviewWillAppear的rootViewController,也是刚刚启动UINavigationController后的AppDelegate。 这些都没有工作。

只是所以你知道,我已经重写了一个UINavigationBar类别中的drawRect:(CGRect)rect方法,使用下面的代码将背景颜色变成纯黑色,但是我不认为这与问题有关。

 [[UIColor blackColor] set]; CGContextFillRect(UIGraphicsGetCurrentContext(), rect); 

有谁知道最好的方法来做到这一点?

如果需要提供更多的控件,或者不需要启用导航,请使用工具栏而不是导航栏。“ – 从导航栏/指南下的iOS人机界面指南。