我目前正在Xcode 8 beta
上为iOS 10
开发一个应用程序(在Swift 3中)。
我想要实现的是在运行时更改视图控制器中的状态栏样式,以便将主题从白天主题更改为夜间主题。 我发现我过去在开发其他应用时使用的方法已被弃用,如API参考文献here所示。
然而,preferredStatusBarStyle
在这里工作不起作用,因为我想在一个视图控制器中更改它。
有人能想到其他方法吗?
提前致谢
修改
要清楚,我想要做的是在视图控制器已经在屏幕上时更改样式。
答案 0 :(得分:0)
您可以创建一个statusBarStyle变量,当更改时更新状态栏外观。如果您只想让它影响一个控制器,只需在控制器消失或消失时反转效果。
var statusBarStyle: UIStatusBarStyle = .lightContent {
didSet {
setNeedsStatusBarAppearanceUpdate()
}
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return statusBarStyle
}
上述解决方案将在控制器出现之前覆盖之前控制器的状态栏样式。如果要在控制器出现时更改状态栏样式,请尝试以下操作:
var statusBarStyle: UIStatusBarStyle? {
didSet {
setNeedsStatusBarAppearanceUpdate()
}
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return statusBarStyle ?? super.preferredStatusBarStyle
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
statusBarStyle = .lightContent
}
答案 1 :(得分:-1)
在info.plist中,添加值为false的UIViewControllerBasedStatusBarAppearance键。
然后,在你的viewController切换到你的夜晚主题时:
UIApplication.shared.statusBarStyle = .lightContent
要回到黑色:
UIApplication.shared.statusBarStyle = .default