如何更改UINavigationBar高度

时间:2011-07-06 01:42:44

标签: iphone objective-c ios uinavigationcontroller uinavigationbar

这个问题已经让我瘫痪了一天多。我需要修改UINavigationBar的高度。

UINavigationController在AppDelegate中创建,如此。

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]
}

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

我尝试在启动UINavigationController后立即将[navBar setFrame:]添加到rootViewController的 viewDidload viewWillAppear 以及AppDelegate。这些都不起作用。

您知道,我已经覆盖了UINavigationBar类别中的drawRect:(CGRect)rect方法,使用下面的代码使背景颜色变为黑色,但我认为这与问题无关。

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

有谁知道最好的方法吗?

1 个答案:

答案 0 :(得分:1)

“如果您需要提供更多控件,或者您不需要启用导航,请使用工具栏而不是导航栏。” - 来自导航栏/指南下的iOS Human Interface Guidelines