在横向模式下,UINavigationController导航栏不会缩小

时间:2011-01-08 14:56:08

标签: iphone uinavigationcontroller uinavigationbar landscape

我的导航控制器导航栏在旋转到横向时不会改变高度。 alt text

看到它保持在44像素而不是34像素。

我该怎么做才能解决这个问题?

2 个答案:

答案 0 :(得分:5)

您必须将导航控制器直接添加为窗口的子视图,否则这不会自动生效。 (无需手动更改导航栏的框架。)

-[application:didFinishLaunchingWithOptions:]的{​​{1}}方法应该包含类似

的内容
AppDelegate


要获得一个自动运行的示例,您还可以在XCode中创建一个新的基于导航的应用程序,并为RootViewController的[window addSubview:self.yourNavController.view]; 方法添加一个始终返回YES的实现。

答案 1 :(得分:-1)

在班级的autoRotation方法中,更改navBar的框架,如下所示:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{
    if((self.interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || (self.interfaceOrientation == UIInterfaceOrientationLandscapeRight))
    {
         self.navigationController.navigationBar.frame = CGRectMake(0,0,480,32);
    }
    else if((self.interfaceOrientation == UIInterfaceOrientationPortrait) || (self.interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown))
    {
         self.navigationController.navigationBar.frame = CGRectMake(0,0,320,44);
    }
    else
    {
         assert(false);
    }
}