我有一个自定义颜色导航栏,我需要确保状态栏颜色设置为白色。在 iOS 13 之前,这很容易做到,这里是 UIViewController 的代码片段,它做得很好:
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.navigationBar.barStyle = .black
}
Run Code Online (Sandbox Code Playgroud)
我在 iOS 13 中面临的问题是我现在需要使用 NavigationBar 的 standardAppearance 和 scrollEdgeAppearance 来撤消新 UIKit 中的强制背景透明度。虽然我可以使用 UINavigationBarAppearance() 将 NavigationBar 的文本和背景颜色设置为我需要的颜色,但它会将我的状态栏颜色恢复为黑色。这是一个重现问题的简单示例:
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.navigationBar.standardAppearance = UINavigationBarAppearance() // <--- This is the line that reverts my status bar colour back to black
self.navigationController?.navigationBar.barStyle = .black
}
Run Code Online (Sandbox Code Playgroud)
我不确定这是我做错了什么还是这是一个 UIKit 错误?
编辑
最后通过将以下两个属性添加到我的 Info.plist 文件来解决问题:
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleLightContent</string>
Run Code Online (Sandbox Code Playgroud)