Цвет заголовка UINavigationBar
Почему заголовок навигационной панели не меняет свой цвет на белый, когда я снова на главной UIViewController
? Вот простой код (viewWillAppear
, viewWillDisappear
), но это не работает, название остается зеленым, когда я снова на этом ВК. Основной цвет в приложении тоже зеленый:
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)!]
}
3 ответа
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 контроллера push (second) view помещают этот код:
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.
Вы должны добавить цветовой код заголовка навигации в представлении появится предыдущий контроллер представления.