如何隐藏AVPlayerViewController中的状态栏?

问题描述 投票:2回答:6

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

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

   application.statusBarHidden = true

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

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

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

ios iphone xcode swift3 avplayer
6个回答
2
投票

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

override var prefersStatusBarHidden: Bool {
    return true
}

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

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

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


2
投票

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

application.isStatusBarHidden = true

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

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

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

1
投票

这项工作对我来说:

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

0
投票

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

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

0
投票

简单地将AVPlayerViewController子类化:

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

并使用PlayerViewController()


-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中的状态栏。

© www.soinside.com 2019 - 2024. All rights reserved.