setStatusBarStyle:animated:已弃用

我目前正在Xcode 8 beta iOS 10上开发一个应用程序(在Swift 3中)。

我想实现的是在运行时更改视图控制器中的状态栏风格,以将主题从白天主题更改为夜晚主题。 我发现过去我开发另一个应用程序时使用的方法已被弃用,如API参考所示。

然而, preferredStatusBarStyle将不能在这里工作,因为我想改变它在一个单一的视图控制器。

任何人都可以想到其他方法来执行此操作吗?

提前致谢

编辑:

要清楚,我想要做的是当视图控制器已经在屏幕上时,改变风格。

您可以创build一个statusBarStylevariables,该variables在更改时更新状态栏的外观。 如果你只想要这个影响到一个控制器,那么当控制器将会或者消失的时候,简单地反转效果。

 var statusBarStyle: UIStatusBarStyle = .lightContent { didSet { setNeedsStatusBarAppearanceUpdate() } } override var preferredStatusBarStyle: UIStatusBarStyle { return statusBarStyle } 

上述解决scheme将在控制器出现之前覆盖以前的控制器的状态栏样式。 如果要在控制器出现时更改状态栏样式,请尝试以下操作:

 var statusBarStyle: UIStatusBarStyle? { didSet { setNeedsStatusBarAppearanceUpdate() } } override var preferredStatusBarStyle: UIStatusBarStyle { return statusBarStyle ?? super.preferredStatusBarStyle } override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) statusBarStyle = .lightContent } 

在你的info.plist中,添加一个值为false的UIViewControllerBasedStatusBarAppearance键。

然后,在你的viewController切换到你的夜景主题时:

 UIApplication.shared.statusBarStyle = .lightContent 

回到黑色:

 UIApplication.shared.statusBarStyle = .default