正如许多iOS开发人员那样,我在iOS 13更新方面面临一些问题。其中之一是状态栏样式的不同管理
在iOS 12上,我曾经这样设置导航栏样式
self.navigationController?.navigationBar.barStyle = .black
这会影响状态栏样式,将其设置为白色(因为导航栏样式为黑色);但它似乎无法在iOS 13上运行,我想它可以处理一些问题
UINavigationBarAppearance()
类
我这样为每个ViewController配置了导航栏:
if #available(iOS 13.0, *) {
let navBarAppearance = UINavigationBarAppearance()
navBarAppearance.configureWithOpaqueBackground()
navBarAppearance.accessibilityTextualContext = .sourceCode
navBarAppearance.titleTextAttributes = [.foregroundColor: UIColor.white]
navBarAppearance.largeTitleTextAttributes = [.foregroundColor: UIColor.white]
navBarAppearance.backgroundColor = .brownCircles
navBarAppearance.shadowImage = nil // remove navigationBar Bottom border
navBarAppearance.shadowColor = nil // remove navigationBar Bottom border
self.navigationController?.navigationBar.standardAppearance = navBarAppearance
self.navigationController?.navigationBar.compactAppearance = navBarAppearance
self.navigationController?.navigationBar.scrollEdgeAppearance = navBarAppearance
} else {
self.navigationController?.navigationBar.barTintColor = .blue
self.navigationItem.title = NSLocalizedString(kTitle, comment: kTitle.capitalized)
}
self.navigationController?.navigationBar.barStyle = .black
到目前为止很好,但是
self.navigationController?.navigationBar.barStyle = .black
仅在iOS 12上运行,在iOS 13上没有任何反应,状态栏看起来仍然是黑色而不是白色
有人遇到过这个问题吗?
最后我想通了!
用于设置灯光状态栏文本的魔术代码是:
self.navigationController?.navigationBar.overrideUserInterfaceStyle = .dark
当然,如果您想更改为深色文本,则必须将其设置为.light。
一些注意事项:
此代码:
if #available(iOS 13.0, *) {
overrideUserInterfaceStyle = .dark
}
尽管应将整个视图和子视图设置为暗,但似乎不会影响状态栏。
您也可以使用:
UIApplication.shared.statusBarStyle = UIStatusBarStyle.lightContent
但是当然已弃用,所以我建议其他方式
您仍然需要:
self.navigationController?.navigationBar.barStyle = .black
但将其放在[[AFTER UINavigationBarAppearance()设置的self.navigationController?.navigationBar.overrideUserInterfaceStyle = .dark
之后。
if #available(iOS 13.0, *) {
let navBarAppearance = UINavigationBarAppearance()
navBarAppearance.configureWithOpaqueBackground()
navBarAppearance.accessibilityTextualContext = .sourceCode
navBarAppearance.titleTextAttributes = [.foregroundColor: UIColor.white]
navBarAppearance.largeTitleTextAttributes = [.foregroundColor: UIColor.white]
navBarAppearance.backgroundColor = .brownCircles
navBarAppearance.shadowImage = nil // remove navigationBar Bottom border
navBarAppearance.shadowColor = nil // remove navigationBar Bottom border
self.navigationController?.navigationBar.standardAppearance = navBarAppearance
self.navigationController?.navigationBar.compactAppearance = navBarAppearance
self.navigationController?.navigationBar.scrollEdgeAppearance = navBarAppearance
self.navigationController?.navigationBar.overrideUserInterfaceStyle = .dark
} else {
self.navigationController?.navigationBar.barTintColor = .blue
self.navigationItem.title = NSLocalizedString(kTitle, comment: kTitle.capitalized)
}
self.navigationController?.navigationBar.barStyle = .black
希望有帮助! ;)