我目前正在 Xcode 8 beta
上为 iOS 10
开发一个应用程序(使用 Swift 3)。
我想要实现的是在运行时更改 View Controller 内的状态栏样式,以将主题从白天主题更改为夜间主题。 我发现我过去开发另一个应用程序时使用的方法已被弃用,如图所示 here在 API 引用上。
但是,preferredStatusBarStyle
在这里不起作用,因为我想在单个 View Controller 中更改它。
谁能想到其他方法来执行此操作?
提前致谢
编辑:
明确地说,我想做的是在 View Controller 已经在屏幕上时更改样式。
最佳答案
您可以创建一个 statusBarStyle 变量,该变量在更改时更新状态栏外观。如果您只希望它影响一个 Controller ,只需在 Controller 消失或确实消失时反转效果即可。
var statusBarStyle: UIStatusBarStyle = .lightContent {
didSet {
setNeedsStatusBarAppearanceUpdate()
}
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return statusBarStyle
}
上述解决方案会在 Controller 出现之前覆盖之前 Controller 的状态栏样式。如果您想在 Controller 出现时更改状态栏样式,请尝试以下操作:
var statusBarStyle: UIStatusBarStyle? {
didSet {
setNeedsStatusBarAppearanceUpdate()
}
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return statusBarStyle ?? super.preferredStatusBarStyle
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
statusBarStyle = .lightContent
}
关于ios - setStatusBarStyle :animated: deprecated,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39434477/