Ios 在所有实例中更改自定义UINavigationController属性
我正在尝试创建一个选项,用户可以在其中定义navigationBar背景色。(我在这里提出了一个简单的问题) 我正在将名为CustomNavigationController:UINavigationController的自定义UINavigationController用于以下实现:Ios 在所有实例中更改自定义UINavigationController属性,ios,swift,uinavigationcontroller,Ios,Swift,Uinavigationcontroller,我正在尝试创建一个选项,用户可以在其中定义navigationBar背景色。(我在这里提出了一个简单的问题) 我正在将名为CustomNavigationController:UINavigationController的自定义UINavigationController用于以下实现: class CustomNavigationController: UINavigationController { override func viewDidLoad() { super.viewDi
class CustomNavigationController: UINavigationController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillLayoutSubviews() {
self.navigationBar.barTintColor = .orange
self.navigationBar.isTranslucent = false
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}
这个定制的UINavigationController被嵌入到几个viewcontroller中
因此,默认情况下,自定义NavigationController的navigationBar为橙色
class SecondViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func redButtonPressed(_ sender: Any) {
let navController = navigationController as! CustomNavigationController
navController.navigationBar.barTintColor = .red
}
@IBAction func orangeButtonPressed(_ sender: Any) {
let navController = navigationController as! CustomNavigationController
navController.navigationBar.barTintColor = .orange
}
}
第二个视图控制器可以编辑其嵌入式navigationController的颜色
我的问题是:如何更改所有CustomNavigationController实例的颜色以保持整个应用程序中所有实例的颜色都已更改
谢谢 你可以试试这个
UINavigationBar.appearance().barTintColor = UIColor.orange
UINavigationBar.appearance().tintColor = UIColor.white
为了更改所有视图控制器的导航栏颜色
您可以在应用程序中设置所有UINavigationBar
UINavigationBar.appearance()
设置所有属性 在您的情况下,您可以访问CustomNavigationController的所有实例,如下所示:
tabBarController?.viewControllers?.forEach { controller in
if let controller = controller as? CustomNavigationController {
controller.customBarTintColor = .red
}
}
还要将CustomNavigationController实现更改为如下所示,否则每次布局调用时颜色都将重置为橙色
class CustomNavigationController: UINavigationController {
var customBarTintColor: UIColor = .orange {
didSet {
navigationBar.barTintColor = customBarTintColor
}
}
override func viewDidLoad() {
super.viewDidLoad()
navigationBar.barTintColor = customBarTintColor
navigationBar.isTranslucent = false
}
}