导航栏的横向模式问题
Posted
技术标签:
【中文标题】导航栏的横向模式问题【英文标题】:landscape mode problem with a navigation bar 【发布时间】:2010-11-18 19:47:52 【问题描述】:我有一个 ViewController 来管理一个视图,其中我有一个表视图、一个 ImageView 和一个导航栏。 当我将其置于横向模式时,导航栏不会调整为 32,它仍保持为 44 我首先尝试在 IB 中使用自动调整大小但没有成功,然后我尝试将此代码放在 ViewController 中
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration
//[super willAnimateRotationToInterfaceOrientation:orientation duration:duration];
CGRect frame = self.navigationController.navigationBar.frame;
if (UIInterfaceOrientationIsPortrait(orientation))
frame.size.height = 44;
else
frame.size.height = 32;
self.navigationController.navigationBar.frame = frame;
但什么都没有。 我该如何解决这个问题?
【问题讨论】:
【参考方案1】:我搞错了,没有navigationController,所以我把IB中的导航栏和代码中的outlet navBar链接起来用了
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration
[super willAnimateRotationToInterfaceOrientation:orientation duration:duration];
CGRect frame = self.navBar.frame;
if (UIInterfaceOrientationIsPortrait(orientation))
frame.size.height = 44;
else
frame.size.height = 32;
self.navBar.frame = frame;
现在可以了,我只是图像视图有问题
【讨论】:
这个方法需要调用super,不要注释掉。【参考方案2】:导航顶部栏的自定义背景图片也有同样的问题。
我的横向图像高度不正确,它是 44 像素而不是 32 像素(@2x 版本也是如此,它是 88 像素而不是 64 像素)。裁剪图像后,横向顶部栏具有正确的高度。
【讨论】:
以上是关于导航栏的横向模式问题的主要内容,如果未能解决你的问题,请参考以下文章
在不影响导航栏的情况下更改 NavigationController 的内容视图宽度