Как изменить цвет заголовка навигации
Я думаю, что весь день можно изменить цвет заголовка панели навигации, но он не работает. это мой код:
var user: User? {
didSet {
navigationItem.title = user?.name
observeMessages()
}
}
Я использую hasSet, чтобы показать название в заголовке навигации.
Ответы
Ответ 1
Добавьте это в свой код. ,
let textAttributes = [NSForegroundColorAttributeName:UIColor.red]
navigationController?.navigationBar.titleTextAttributes = textAttributes
SWIFT 4:
let textAttributes = [NSAttributedStringKey.foregroundColor:UIColor.red]
navigationController?.navigationBar.titleTextAttributes = textAttributes
SWIFT 4. 2+:
let textAttributes = [NSAttributedString.Key.foregroundColor:UIColor.red]
navigationController?.navigationBar.titleTextAttributes = textAttributes
Сохраняя все остальные атрибуты заголовка: Если вы просто хотите изменить цвет, вы можете сделать это так:
if var textAttributes = navigationController?.navigationBar.titleTextAttributes {
textAttributes[NSAttributedString.Key.foregroundColor] = UIColor.red
navigationController?.navigationBar.titleTextAttributes = textAttributes
}
Ответ 2
Цвет заголовка панели навигации можно изменить в раскадровке.
Перейдите в Инспектор атрибутов навигационного контроллерa > Панель навигации и установите желаемый цвет в меню Цвет заголовка.
![enter image description here]()
Ответ 3
установить это первым
navigationController?.navigationBar.barStyle = .default
тогда один из них должен работать
navigationBar.largeTitleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.red]
или же
navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.red]
Ответ 4
Вызывается didSet, если ваш пользователь настроен, возможно, вы задаете переменную имени пользователя и ожидаете, что программа войдет в didSet.
попробуйте установить пользователя.
И если вы хотите изменить цвет текста при изменении названия навигации на имя пользователя, просто вызовите этот код.
navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName : UIColor.red]
var user: User? {
didSet {
navigationItem.title = user?.name
}
}
override func viewDidLoad() {
super.viewDidLoad()
let newUser = User()
newUser.name = "John Doe"
user = newUser
}
Ответ 5
Если вы установили заголовок панели навигации так, чтобы он предпочитал большие заголовки, например, так:
navigationBar.prefersLargeTitles = true
тогда вам нужно использовать свойство largeTitleTextAttributes, а не свойство titleTextAttributes. Если вы установили заголовок навигации в качестве большого заголовка, titleTextAttribute не является правильным свойством для использования. Используйте свойство largeTitleTextAttributes, например, так:
navigationBar.largeTitleTextAttributes = [.foregroundColor: UIColor.white]
Ответ 6
В iOS 13 для настройки внешнего вида панели навигации вам необходимо использовать UINavigationBarAppearance
:
let appearance = UINavigationBarAppearance()
appearance.titleTextAttributes = [.foregroundColor: UIColor.red]
appearance.largeTitleTextAttributes = [.foregroundColor: UIColor.red]
navigationItem.standardAppearance = appearance
navigationItem.scrollEdgeAppearance = appearance
Ответ 7
Swift 5/Xcode 11
Напишите этот код как расширение от UINavigationBar
extension UINavigationBar {
func customNavigationBar() {
// color for button images, indicators and etc.
self.tintColor = UIColor.Custom.mainAppColor
// color for background of navigation bar
// but if you use larget titles, then in viewDidLoad must write
// navigationController?.view.backgroundColor = // your color
self.barTintColor = .white
self.isTranslucent = false
// for larget titles
self.prefersLargeTitles = true
// color for large title label
self.largeTitleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.someColor]
// color for standard title label
self.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.someColor]
// remove bottom line/shadow
self.setBackgroundImage(UIImage(), for: .default)
self.shadowImage = UIImage()
}
}
затем в AppDelegate.swift
вызовите UINavigationBar.appearance().customNavigationBar()
в функции didFinishLaunchingWithOptions