如何在iPhone应用程序中设置UINavigationBar的高度

时间:2009-09-06 12:16:54

标签: iphone uinavigationcontroller uinavigationbar bounds

我使用UINavigationController的典型情况,id喜欢使导航栏更高一些。设置它的边界和框架似乎没有什么区别,即时使用此代码

    //set up the navigation
UINavigationController *navigationController = [UINavigationController new];

[navigationController.navigationBar setBarStyle:UIBarStyleBlack];
[navigationController.navigationBar setTintColor:[UIColor purpleColor]];
[navigationController.navigationBar setBounds:CGRectMake(0.0, 0.0, 480.0, 100.0)];
[navigationController.navigationBar setFrame:CGRectMake(0.0, 0.0, 480.0, 100.0)];

但无济于事。有任何想法吗?

3 个答案:

答案 0 :(得分:2)

我认为你不能改变导航栏的高度。除非您添加提示消息...但这不是您想要的。

框架是视图的可见区域。界限是内部区域。通常它的原点为(0,0),并且与帧一样宽和高。但是,当内容超出可见区域时(如使用UIScrollView),边界可能更大(原点不同)。您很少看到小于其各自帧的边界。

编辑:看看你的代码,[UINavigationController new]是关于什么的?你应该做[[UINavigationController alloc] init],不是吗?

另外,你所做的并不是真正的子类化......

答案 1 :(得分:1)

在2009年的时候,可能无法改变UINavigationController的高度。但是,在iOS SDK 4.3中,有一种方法(黑客)。

要更改UINavigationController的高度,请在viewWillAppear:animated:函数中更改其帧大小。然后,高度将在整个应用程序中保持自定义。

答案 2 :(得分:0)

据我所知,不应更改标准导航栏高度。

  

“具体来说,没关系   修改barStyle,tintColor和半透明属性,但是你   绝不能直接更改UIView级属性,如框架,   边界,alpha或隐藏属性。“

如果您想自定义导航栏的外观,可以使用iOS 5中的外观代理[UINavigationBar外观]