我正在模拟器中使用深色背景的单视图应用程序。这是一个包装在UINavigationController中的UIViewController。
在我的视图控制器中,我有override var preferredStatusBarStyle: UIStatusBarStyle { .lightContent }
在我的info.plist中,我有View controller-based status bar appearance = YES
但是当我运行它时,它显示白色一秒钟,然后跳到显示黑色文本。
这是怎么回事?有解决办法吗?
编辑:为确保没有任何效果,我已经尝试过.default
,.lightContent
和.darkContent
答案 0 :(得分:5)
我最近遇到了这个问题,这些扩展程序似乎可以解决该问题。
extension UITabBarController {
open override var childForStatusBarStyle: UIViewController? {
return selectedViewController?.childForStatusBarStyle ?? selectedViewController
}
}
extension UINavigationController {
open override var childForStatusBarStyle: UIViewController? {
return topViewController?.childForStatusBarStyle ?? topViewController
}
}
我只是将它们放入名为UIViewController+StatusBar.swift
的文件中,并将其包含在项目中。
答案 1 :(得分:0)
@matt引用的正确答案是navigationController?.navigationBar.barStyle = .lightContent
中的viewDidLoad
。