我正在尝试更改特定UIStatusBar
中的UIViewController
色彩。
这是我的代码:
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
self.setNeedsStatusBarAppearanceUpdate()
}
什么都没发生。
答案 0 :(得分:1)
在UINavigationController上,未调用preferredStatusBarStyle,因为其topViewController优于self。因此,要在UINavigationController上调用preferredStatusBarStyle,您需要更改其childViewControllerForStatusBarStyle。
要针对一个UINavigationController进行此操作:
class MyRootNavigationController: UINavigationController {
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
override var childViewControllerForStatusBarStyle: UIViewController? {
return nil
}
}
答案 1 :(得分:0)
您可以将扩展名添加到UINavigationController
:
extension UINavigationController {
open override var childForStatusBarStyle: UIViewController? {
return visibleViewController
}
}
然后为需要光状态栏(白色时间,图标等)的视图控制器,然后覆盖preferredStatusBarStyle
:
override var preferredStatusBarStyle: UIStatusBarStyle {
return UIStatusBarStyle.lightContent
}
对于黑暗的状态栏,您无需执行任何操作。
答案 2 :(得分:0)
您可能需要在info.plist中添加值为“ YES”的“基于View Controller的状态栏外观”