我正在编写一个包含多个视图的iOS应用。我已经将App设置为使用基于ViewController的状态栏样式,这允许我使用以下代码
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
这很有效。
但后来我在导航控制器中嵌入了视图,并将BarButtonItem与showSegue连接起来。从那时起,视图的ViewController切换为忽略样式设置并显示默认的黑色状态栏。
答案 0 :(得分:55)
当您进入无法调用的导航控制器时。将调用导航控制器的preferredStatusBarStyle。请尝试使用您的代码:
extension UINavigationController {
open override var preferredStatusBarStyle: UIStatusBarStyle {
return topViewController?.preferredStatusBarStyle ?? .default
}
}
答案 1 :(得分:0)
有一个更简洁的解决方案(Apple推荐):
extension UINavigationController {
override open var childForStatusBarStyle: UIViewController? {
return topViewController
}
}