我目前正在开发一个应用程序(在 Swift 3 中)Xcode 8 beta
, for iOS 10
.
我想要实现的是在运行时更改视图控制器内的状态栏样式,以将主题从白天主题更改为夜间主题。
我发现我过去开发另一个应用程序时使用的方法已被弃用,如图所示here https://developer.apple.com/reference/uikit/uiapplication/1622923-setstatusbarstyle关于 API 参考。
然而,preferredStatusBarStyle
在这里不起作用,因为我想在单个视图控制器中更改它。
有人能想到其他方法来执行此操作吗?
提前致谢
EDIT:
需要明确的是,我想要做的是当视图控制器已经在屏幕上时更改样式。
您可以创建一个 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
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)