【发布时间】:2019-10-19 22:39:31
【问题描述】:
我有一个自定义颜色的导航栏,我需要确保状态栏颜色设置为白色。在 iOS 13 之前,这很容易做到,这里有一个 UIViewController 中的代码 sn-p 可以很好地完成这项工作:
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.navigationBar.barStyle = .black
}
我在 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
}
我不确定这是我做错了什么还是 UIKit 错误?
编辑
最终通过将以下两个属性添加到我的 Info.plist 文件来解决问题:
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleLightContent</string>
【问题讨论】:
标签: ios swift uikit uinavigationbar ios13