1

我正在开发一个应用程序,它首先呈现一个带有一堆按钮的 UICollectionView,这些按钮模态地打开一个带有自定义“Over Full Screen”segue 的 AVPlayerViewController 的子类。UIViewControllerBasedStatusBarAppearance 在我的 Info.plist 中设置为 YES。

这是 Interface Builder 中所有视图控制器的小屏幕截图(不得不缩小,抱歉): 界面生成器的屏幕截图

segue 在 IB 中定义。当用户点击一个集合视图单元格时,我使用 performSegueWithIdentifier() 来执行 segue。

我现在遇到的问题是这样的: 横向AVPlayer隐藏播放控件前后对比 人像AVPlayer隐藏播放控件前后对比

为什么在横向模式下状态栏与播放控件一起隐藏,而在纵向模式下却完全相反?

在我的 AVPlayerViewController 子类中让 prefersStatusBarHidden() 返回 true 不会做任何事情。是什么赋予了?

4

1 回答 1

1

刚刚想出了一个解决方案:

extension UINavigationController {
    public override func childViewControllerForStatusBarHidden() -> UIViewController? {
        return self.childViewControllers.last
    }

    public override func childViewControllerForStatusBarStyle() -> UIViewController? {
        return self.childViewControllers.last
    }
}

是的,只需为应用程序中的所有导航视图控制器覆盖这两个函数。我认为这是一个 hack,而不是这个问题的“正确”解决方案,因此请谨慎使用。

据我所知,这永远不会失败。在我的应用程序中,每个 Navigation VC 都只有一个子 VC,但 YMMV。

于 2015-11-24T13:20:48.397 回答