我的导航控制器导航栏在旋转到横向时不会改变高度。
看到它保持在44像素而不是34像素。
我该怎么做才能解决这个问题?
答案 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);
}
}