UINavigationBar 标题颜色
UINavigationBar title colour
为什么当我回到主 UIViewController
时,导航栏标题没有将其颜色更改为白色?这是简单的代码(viewWillAppear
、viewWillDisappear
),但它不起作用,当我回到这个 VC 时,标题保持绿色。应用中的主色也是绿色:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
UIApplication.shared.statusBarStyle = .lightContent
DispatchQueue.main.async {
self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white, NSAttributedStringKey.font: UIFont(name: "Gotham-Medium", size: 20)!]
}
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
UIApplication.shared.statusBarStyle = .default
navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.green, NSAttributedStringKey.font: UIFont(name: "Gotham-Medium", size: 20)!]
}
您必须在以前的视图控制器的视图中添加导航标题颜色代码。
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
UIApplication.shared.statusBarStyle = .lightContent
DispatchQueue.main.async {
addTitleLabel()
}
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
UIApplication.shared.statusBarStyle = .default
}
func addTitleLabel(){
var titleLabel: UILabel = UILabel()
titleLabel.textColor = .white
titleLabel.textAlignment = .center
titleLabel.text = "Home"
self.navigationItem.titleView = titleLabel
}
从 viewWillAppear 调用此方法。
由于视图控制器之间共享导航栏的方式以及系统更新它的方式,这不会按照您想要的方式工作。
然而,您可以做的是以您想要的字体和颜色在导航栏的标题中放置一个 UILabel。这种方法的优点是 UILabel 只适用于那个特定的视图控制器,所以你永远不需要重置它。
因此在推送的(第二个)视图控制器的 viewDidLoad 中放置此代码:
let label = UILabel()
label.font = UIFont(name: "Menlo", size: 20)
label.textColor = .white
label.text = self.navigationItem.title
self.navigationItem.titleView = label
(请注意,您可以将文本设置为您想要的任何内容,但 self.navigationItem.title 保持简单)
您现在可以从 viewWillAppear 和 viewWillDisappear 方法中删除与导航栏相关的代码。
为什么当我回到主 UIViewController
时,导航栏标题没有将其颜色更改为白色?这是简单的代码(viewWillAppear
、viewWillDisappear
),但它不起作用,当我回到这个 VC 时,标题保持绿色。应用中的主色也是绿色:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
UIApplication.shared.statusBarStyle = .lightContent
DispatchQueue.main.async {
self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white, NSAttributedStringKey.font: UIFont(name: "Gotham-Medium", size: 20)!]
}
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
UIApplication.shared.statusBarStyle = .default
navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.green, NSAttributedStringKey.font: UIFont(name: "Gotham-Medium", size: 20)!]
}
您必须在以前的视图控制器的视图中添加导航标题颜色代码。
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
UIApplication.shared.statusBarStyle = .lightContent
DispatchQueue.main.async {
addTitleLabel()
}
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
UIApplication.shared.statusBarStyle = .default
}
func addTitleLabel(){
var titleLabel: UILabel = UILabel()
titleLabel.textColor = .white
titleLabel.textAlignment = .center
titleLabel.text = "Home"
self.navigationItem.titleView = titleLabel
}
从 viewWillAppear 调用此方法。
由于视图控制器之间共享导航栏的方式以及系统更新它的方式,这不会按照您想要的方式工作。
然而,您可以做的是以您想要的字体和颜色在导航栏的标题中放置一个 UILabel。这种方法的优点是 UILabel 只适用于那个特定的视图控制器,所以你永远不需要重置它。
因此在推送的(第二个)视图控制器的 viewDidLoad 中放置此代码:
let label = UILabel()
label.font = UIFont(name: "Menlo", size: 20)
label.textColor = .white
label.text = self.navigationItem.title
self.navigationItem.titleView = label
(请注意,您可以将文本设置为您想要的任何内容,但 self.navigationItem.title 保持简单)
您现在可以从 viewWillAppear 和 viewWillDisappear 方法中删除与导航栏相关的代码。