在横向播放嵌入视频后,iOS状态栏覆盖UINavigationBar

时间:2015-12-10 15:38:16

标签: ios objective-c uiwebview uiinterfaceorientation

我正在使用Objective-C开发iOS应用。在发布时间(7.1.1)运行最新的xCode并在iOS 9.1模拟器和iPhone 6上运行。

我的应用已被锁定为肖像。该应用程序的1个部分有一个UIWebView。 UIWebView可以嵌入视频。当用户播放视频时,它允许他们将设备旋转到横向(这是预期的行为)。但是,一旦他们这样做并点击“完成”#34;在视频上,状态栏开始与导航栏重叠(请参阅链接屏幕截图)。

Status Bar overlapping UINavigationBar

应用程序中还有其他地方我本身提供MPMoviePlayerViewController,旋转对状态或导航栏没有影响。

有什么想法?

2 个答案:

答案 0 :(得分:0)

这里的问题是当您在UIViews周围移动时正确处理设备旋转。这在视频播放中很常见,其中视频需要是风景但其他一切都是肖像。以下是一些很好的链接:Forcing landscape orientation on fullscreen MPMoviePlayerController prevents correct rotation when exiting fullscreenWhat 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);
    }
}