web-dev-qa-db-fra.com

Comment changer la couleur du texte du titre de la barre de navigation dans Swift 4?

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. 

5
Sanf0rd

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]
13
mtrevia

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]
    }
6
Ezimet

Swift 4

    UINavigationBar.appearance().titleTextAttributes = [NSAttributedStringKey(rawValue: NSAttributedStringKey.foregroundColor.rawValue): UIColor.orange]
3
Safad Funy

Vous pouvez changer la couleur du titre de la barre de navigation en utilisant ce code 

navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
1
Bilal Mustafa

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)
    }
}
1
thexande

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])
0
Durul Dalkanat