En développant dans Swift 3, j'avais l'habitude d'écrire:
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: UIColor.orange]
mettre ceci dans AppDelegate changerait toutes les couleurs de titre des UINavbars en orange.
Maintenant, je veux faire la même chose avec Swift 4 et iOS 11.
Vous pouvez changer la couleur du titre UINavigationBar en définissant la propriété foregroundColor
sur titleTextAttributes
.
Comme documenté ici :
La propriété titleTextAttributes spécifie les attributs pour l’affichage du titre de la barre. Vous pouvez spécifier la police, la couleur du texte, couleur de l'ombre du texte et décalage de l'ombre du texte pour le titre dans le texte attribut dictionnaire en utilisant la police, foregroundColor et shadow touches, respectivement.
Donc, vous aurez le même effet en faisant ceci:
UINavigationBar.appearance().titleTextAttributes = [NSAttributedStringKey.foregroundColor.rawValue: UIColor.orange]
Swift 4.1 Modification de la couleur du titre de la barre de navigation
if #available(iOS 11.0, *) {
//To change iOS 11 navigationBar largeTitle color
UINavigationBar.appearance().prefersLargeTitles = true
UINavigationBar.appearance().largeTitleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
} else {
// for default navigation bar title color
UINavigationBar.appearance().titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
}
Swift 4.2+ Modification de la couleur du titre de la barre de navigation
if #available(iOS 11.0, *) {
//To change iOS 11 navigationBar largeTitle color
UINavigationBar.appearance().prefersLargeTitles = true
UINavigationBar.appearance().largeTitleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
} else {
// for default navigation bar title color
UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
}
Swift 4
UINavigationBar.appearance().titleTextAttributes = [NSAttributedStringKey(rawValue: NSAttributedStringKey.foregroundColor.rawValue): UIColor.orange]
Vous pouvez changer la couleur du titre de la barre de navigation en utilisant ce code
navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
Mise en œuvre de Swift 4 pour les grands titres et les titres normaux:
extension UINavigationController {
func setTitleForgroundTitleColor(_ color: UIColor) {
self.navigationBar.titleTextAttributes = [NSAttributedStringKey(rawValue: NSAttributedStringKey.foregroundColor.rawValue): color]
}
func setLargeTitleColor(_ color: UIColor) {
self.navigationBar.largeTitleTextAttributes = [NSAttributedStringKey(rawValue: NSAttributedStringKey.foregroundColor.rawValue): color]
}
func setAllTitleColor(_ color: UIColor) {
setTitleForgroundTitleColor(color)
setLargeTitleColor(color)
}
}
Swift 4.2
fileprivate func convertToOptionalNSAttributedStringKeyDictionary(_ input: [String: Any]?) -> [NSAttributedString.Key: Any]? {
guard let input = input else { return nil }
return Dictionary(uniqueKeysWithValues: input.map { key, value in (NSAttributedString.Key(rawValue: key), value)})
}
Usage
// Set Navigation bar Title color
UINavigationBar.appearance().titleTextAttributes = convertToOptionalNSAttributedStringKeyDictionary([NSAttributedString.Key.foregroundColor.rawValue : UIColor.white])