在我的[[Main.storyboard中,我有一个NavigationBar TintColor设置为default。
在我的快捷文件中,我具有以下功能,在该功能中,我试图更新一些元素的外观,例如搜索栏颜色和导航栏背景颜色。搜索栏的颜色更改有效,但导航栏的背景颜色无效。导航栏的背景色应基于在以前的View Controller上选择的颜色,因此我正在点击(selectedCategory?.color
)。
使用print(navBarColour)
,我确认正确/预期的颜色已被拾取,但是我的导航栏仍然以某种方式显示默认颜色。
任何人都可以帮忙吗?
override func viewWillAppear(_ animated: Bool) {
if let colourHex = selectedCategory?.colour {
title = selectedCategory!.name
guard let navBar = navigationController?.navigationBar else {fatalError("Navigation does not exists.")}
if let navBarColour = UIColor(hexString: colourHex) {
navBar.barTintColor = navBarColour
navBar.tintColor = ContrastColorOf(backgroundColor: navBarColour, returnFlat: true)
navBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: ContrastColorOf(backgroundColor: navBarColour, returnFlat: true)]
searchBar.barTintColor = navBarColour
print(navBarColour)
}
}
}
bar.backgroundColor = .red
对我有用。因此,您可以使用颜色值,确保在此属性中传递正确的UIColor值。我希望它有助于解决您的问题。