为什么 NavigationBar 背景颜色没有改变?
Why the NavigationBar background color not change?
当用户选择不同的主题风格时,我需要更改导航栏的背景颜色。
但奇怪的是,用户选择“深色”模式后,进入后台,再回到前台,如果用户想变回“浅色”模式,导航栏仍然是黑色风格,有一个“_UIVisualEffectBackdropView”保持黑暗。
但如果用户在进入后台之前选择“Light”模式,则一切正常。
我该如何修复这个错误?下面是代码和图片:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
switch indexPath.row {
case 0:
self.changeToLightColor()
default:
self.changeToDarkColor()
}
}
private func changeToLightColor() {
self.navigationController?.navigationBar.barStyle = .default
let textAttribute = [NSAttributedString.Key.foregroundColor: UIColor.systemBlue]
self.navigationController?.navigationBar.titleTextAttributes = textAttribute
}
private func changeToDarkColor() {
self.navigationController?.navigationBar.barStyle = .black
let textAttribute = [NSAttributedString.Key.foregroundColor: UIColor.systemGreen]
self.navigationController?.navigationBar.titleTextAttributes = textAttribute
}
非常感谢您的帮助和提前回答!
好吧,我花了一点时间才弄清楚如何解决这个问题,解决方法很简单。
只需将 navigationBar
中的 barTintColor
设置为您需要的颜色即可。
private func changeToLightColor() {
self.navigationController?.navigationBar.barStyle = .default
//Set to white color
self.navigationController?.navigationBar.barTintColor = UIColor.white
let textAttribute = [NSAttributedString.Key.foregroundColor: UIColor.systemBlue]
self.navigationController?.navigationBar.titleTextAttributes = textAttribute
}
private func changeToDarkColor() {
self.navigationController?.navigationBar.barStyle = .black
//Set to black color
self.navigationController?.navigationBar.barTintColor = UIColor.black
let textAttribute = [NSAttributedString.Key.foregroundColor: UIColor.systemGreen]
self.navigationController?.navigationBar.titleTextAttributes = textAttribute
}
我做了之后,问题就解决了
当用户选择不同的主题风格时,我需要更改导航栏的背景颜色。
但奇怪的是,用户选择“深色”模式后,进入后台,再回到前台,如果用户想变回“浅色”模式,导航栏仍然是黑色风格,有一个“_UIVisualEffectBackdropView”保持黑暗。
但如果用户在进入后台之前选择“Light”模式,则一切正常。
我该如何修复这个错误?下面是代码和图片:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
switch indexPath.row {
case 0:
self.changeToLightColor()
default:
self.changeToDarkColor()
}
}
private func changeToLightColor() {
self.navigationController?.navigationBar.barStyle = .default
let textAttribute = [NSAttributedString.Key.foregroundColor: UIColor.systemBlue]
self.navigationController?.navigationBar.titleTextAttributes = textAttribute
}
private func changeToDarkColor() {
self.navigationController?.navigationBar.barStyle = .black
let textAttribute = [NSAttributedString.Key.foregroundColor: UIColor.systemGreen]
self.navigationController?.navigationBar.titleTextAttributes = textAttribute
}
非常感谢您的帮助和提前回答!
好吧,我花了一点时间才弄清楚如何解决这个问题,解决方法很简单。
只需将 navigationBar
中的 barTintColor
设置为您需要的颜色即可。
private func changeToLightColor() {
self.navigationController?.navigationBar.barStyle = .default
//Set to white color
self.navigationController?.navigationBar.barTintColor = UIColor.white
let textAttribute = [NSAttributedString.Key.foregroundColor: UIColor.systemBlue]
self.navigationController?.navigationBar.titleTextAttributes = textAttribute
}
private func changeToDarkColor() {
self.navigationController?.navigationBar.barStyle = .black
//Set to black color
self.navigationController?.navigationBar.barTintColor = UIColor.black
let textAttribute = [NSAttributedString.Key.foregroundColor: UIColor.systemGreen]
self.navigationController?.navigationBar.titleTextAttributes = textAttribute
}
我做了之后,问题就解决了