我正在使用Objective-C开发iOS应用。在发布时间(7.1.1)运行最新的xCode并在iOS 9.1模拟器和iPhone 6上运行。
我的应用已被锁定为肖像。该应用程序的1个部分有一个UIWebView。 UIWebView可以嵌入视频。当用户播放视频时,它允许他们将设备旋转到横向(这是预期的行为)。但是,一旦他们这样做并点击“完成”#34;在视频上,状态栏开始与导航栏重叠(请参阅链接屏幕截图)。
Status Bar overlapping UINavigationBar
应用程序中还有其他地方我本身提供MPMoviePlayerViewController,旋转对状态或导航栏没有影响。
有什么想法?
答案 0 :(得分:0)
这里的问题是当您在UIViews周围移动时正确处理设备旋转。这在视频播放中很常见,其中视频需要是风景但其他一切都是肖像。以下是一些很好的链接:Forcing landscape orientation on fullscreen MPMoviePlayerController prevents correct rotation when exiting fullscreen,What is the "right" way to handle orientation changes in iOS 8?。 Bob McCune写了学习AV基础书,并在他的github repo https://github.com/bobmccune上有一些很好的示例代码。如果您需要有关示例代码的更多细节,请通知我,我可以提供其他链接。
作为一个简单的快速修复,您可以尝试删除状态栏的显示,但这不是合适的事情。
如果您需要,我可以发布更多示例代码链接,您可以看到这是如何完成的。这可能是你提供一些代码的最佳方法。
答案 1 :(得分:0)
- (void)viewDidLoad {
self.navigationBarCenterY = self.navigationController.navigationBar.center.y;
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleWindowDidBecomeHiddenNotification:)
name:UIWindowDidBecomeHiddenNotification
object:self.view.window];
}
- (void)handleWindowDidBecomeHiddenNotification:(NSNotification *)notify
{
if (self.navigationController.navigationBar.center.y != self.navigationBarCenterY) {
self.navigationController.navigationBar.center = CGPointMake(self.navigationController.navigationBar.center.x, self.navigationBarCenterY);
}
}