如何隐藏AVPlayerViewController中的状态栏?

时间:2016-10-19 16:35:13

标签: ios iphone xcode swift3 avplayer

我想知道是否可以做到这一点,我正在研究IOS 10,xCode 8和swift 3,我尝试了各种解决方案,但没有效果:

我试图覆盖prefersStatusBarHidden,我试图分配一个假值,但它只是一个get-only属性而在appdelegate中,我不能这样做:

   application.statusBarHidden = true

最后,我在plist中设置了以下内容:

  • 状态栏最初隐藏为YES View
  • 查看基于控制器的状态栏外观为NO

并且没有任何效果,我相信所有这些解决方案都不起作用,因为升级到IOS 10.

6 个答案:

答案 0 :(得分:2)

只需添加以下代码,即可隐藏任何或所有视图控制器中的状态栏:

override var prefersStatusBarHidden: Bool {
    return true
}

任何包含该代码的视图控制器都会默认隐藏状态栏。

如果要为状态栏设置动画,请在视图控制器上调用setNeedsStatusBarAppearanceUpdate() - 这将强制再次读取prefersStatusBarHidden,此时您可以返回不同的值。如果需要,您对setNeedsStatusBarAppearanceUpdate()的调用实际上可以在动画块内,这会导致状态栏隐藏或以平滑的方式显示。

来自:https://www.hackingwithswift.com/example-code/uikit/how-to-hide-the-status-bar

答案 1 :(得分:2)

即使在使用以下方法隐藏整个应用的状态栏后

application.isStatusBarHidden = true

AVPlayerViewController仍显示状态栏。返回到呈现视图控制器(之前隐藏状态栏)状态栏变为可见。试图在呈现和呈现的视图控制器上覆盖 prefersStatusBarHidden 无效。

唯一有效的方法是在呈现视图控制器的 viewWillAppear 方法中使用弃用的方法 setStatusBarHidden

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    UIApplication.shared.setStatusBarHidden(true, with: .none)
}

答案 2 :(得分:1)

这项工作对我来说:

override var prefersStatusBarHidden: Bool {
     get {
         return true;
     }
}

答案 3 :(得分:0)

这可以使用AVPlayerViewController的扩展名来解决: 将以下行添加到AVPlayerViewController

extension AVPlayerViewController{
    override open var prefersStatusBarHidden: Bool {
    return true
    }
}

答案 4 :(得分:0)

只需将AVPlayerViewController子类化:

class PlayerViewController: AVPlayerViewController {
    override var prefersStatusBarHidden: Bool {
        return true
    }
}

并使用PlayerViewController()

答案 5 :(得分:-1)

执行以下步骤:

在info.plist文件集中 View controller-based status bar appearance = NO

在AppDelegate.swift文件中

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

 // use this code to hide status bar
    application.isStatusBarHidden = true

    return true
 }

此代码足以隐藏swift 3中的状态栏。