该应用程序已经像iOS 7默认一样工作,全屏视图和视图“半透明”的半透明导航栏.问题是隐藏/取消隐藏导航栏会导致iOS 7中出现不同的行为.在iOS 5/6上隐藏/取消隐藏导航栏不会更改视图.在iOS 7上,隐藏栏可视地向上移动视图,在屏幕底部留下一个空白栏,取消隐藏栏将视图向下移动以占据整个屏幕(当然,导航栏位于顶部).
我需要继续支持iOS 5,所以我不使用自动布局,但我确实使用全屏.
我有一个视图,我正在查看可缩放图像 – 因此视图控制器有一个全屏视图,其中包含一个包含imageView的scrollView.
状态栏始终隐藏.
我通过导航控制器进入视图控制器,因此有一个(黑色,半透明)导航栏位于我的全屏视图/ scrollView / imageView的顶部.
短暂延迟后,一些重叠标签会消失,导航栏会隐藏
单击即可恢复叠加标签并取消隐藏导航栏.
这适用于iOS 5/6 – 导航栏滑出屏幕顶部,露出视图/图像的顶部.
在iOS 7上,当导航栏滑出屏幕顶部时,整个视图在视觉上向上移动相应的量(即44点),在屏幕的底部留下黑条.我可以通过在顶层视图上设置背景颜色并调整scrollview的大小来查看背景来看到这一点.视图的顶部确实移动到屏幕外,并且背景颜色不会在屏幕的底部(44点)上绘制.
但是,self.view.frame不会改变并保持在{0,0} 320 x高度.
当我单击以恢复叠加信息和导航栏时,视图向下移动以占据整个屏幕,半透明导航栏位于视图/图像的顶部.
我没有尝试过改变行为:
更改IB视图控制器布局控件(在顶部栏下,在底栏下,调整滚动视图插图).在7.0下运行时,5.1,6.1和7.0的构建都会产生相同的结果.
self.edgesForExtendedLayout = UIRectEdgeNone
什么也没做.使用布局增量值不会执行任何操作.在IB中,当“被视为”iOS 7和iOS 6及更早版本时,视图看起来相同.我打印出很多调试信息,但是当视图移动到“屏幕外”时,视图(或滚动视图)似乎没有任何变化.
- (void) showOverlayInfo { self.navigationController.navigationBar.barStyle = UIBarStyleBlack; [[[self navigationController] navigationBar] setTranslucent:YES]; [[self navigationController] setNavigationBarHidden:NO animated:NO]; overlayInfoHidden = NO; overlayInfoFading = NO; self.infoButton.hidden = NO; self.infoButton.alpha = 1; self.descriptionLabel.hidden = NO; self.descriptionLabel.alpha = 1; }
隐藏覆盖信息的代码是:
- (void) hideOverlayInfo { overlayInfoHidden = YES; overlayInfoFading = NO; self.infoButton.hidden = YES; self.descriptionLabel.hidden = YES; [[self navigationController] setNavigationBarHidden:YES animated:YES]; }
所以有人能告诉我我错过了什么(大概是简单的)吗?