web-dev-qa-db-fra.com

Personnalisation de la barre de navigation sous iOS 7 - La couleur du titre ne fonctionne pas

J'essaie de personnaliser la barre de navigation d'un contrôleur de navigation dans iOS7 et la couleur du titre ne change pas. Je fais ce qui suit:

    [navigationController.navigationBar setBarTintColor:[UIColor colorWithRed:46.0f/256.0f green:46.0f/256.0f blue:46.0f/256.0f alpha:1]];
    [navigationController.navigationBar setTranslucent:NO];
    [navigationController.navigationBar setTitleTextAttributes:@{[UIColor whiteColor]:UITextAttributeTextColor}];
    [self presentViewController:navigationController animated:YES completion:nil];

La translucidité de la barre de navigation est désactivée et il fait sombre, mais le titre reste également sombre. J'ai également essayé de créer une étiquette personnalisée et de la définir comme vue du titre sans trop de chance.

Comment changer la couleur du titre?

29
Live2Enjoy7
[navigationController.navigationBar setBarStyle:UIBarStyleBlack];
7
Live2Enjoy7

L'API d'apparence continue d'évoluer et UITextAttributeTextColor est désormais remplacé par NSForegroundColorAttributeName. 

[navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];

Je vais ajouter deux choses:
La clé vient en premier, puis l'objet.

Si vous souhaitez modifier globalement les attributs de titre de votre contrôleur de navigation, utilisez l’apparence api:

[[UINavigationBar appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor whiteColor]}];

Je mettrais cet appel d'API d'apparence dans la méthode didFinishLaunchingWithOptions de votre délégué d'application.

UPDATE: Peut également afficher les équivalents Swift.

Pour mettre à jour la barre de navigation pour un contrôleur de vue individuel, vous pouvez utiliser:

self.navigationController.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor()]

Pour modifier l'apparence de la barre de navigation dans l'ensemble d'une application, vous pouvez utiliser:

UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor()]
65
Mark Semsel

Ne fonctionne pas pour moi . Utilisation de UINavigation en tant que contrôleur de vue modale.

Apparemment, la couleur du titre doit être définie au niveau d'application

Modifier:

Le meilleur moyen est de changer le titre de la navigation dans chaque contexte VC:

[self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], NSForegroundColorAttributeName,nil]];
11
wolffan

Dans Swift, vous procédez comme suit:

self.navigationController.navigationBar.titleTextAttributes = [
    NSForegroundColorAttributeName : UIColor.redColor(),
    NSFontAttributeName : UIFont.systemFontOfSize(20)
]
4
Antoine

Version Swift + UIAppearance:

    UINavigationBar.appearance().barTintColor = .blackColor()
    UINavigationBar.appearance().barStyle = .Black
4
superarts.org

Le problème dans le code de l'OP est cette ligne:

[navigationController.navigationBar setTitleTextAttributes:@{[UIColor whiteColor]:UITextAttributeTextColor}];

Le nom et la valeur de l'attribut de couleur du texte sont mélangés. CA devrait etre

[navigationController.navigationBar setTitleTextAttributes:@{UITextAttributeTextColor:[UIColor whiteColor]}];
3
mhoeller

ressemble réellement à un bug. Essayer 

myViewcontroller.title = @"";
navigationController.navigationBar.barStyle = UIBarStyleBlack;
myViewcontroller.title = @"TITLE";

travaux.

0
Jason

Dans Swift 4

NSForegroundColorAttributeName a été renommé en NSAttributedString.Key.foregroundColor

Donc, si vous cherchez à changer la couleur du titre de navigationItem:

let navBarAppearance = self.navigationController!.navigationBar    
navBarAppearance.titleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.white]


J'ai utilisé UIColor.white , insérez simplement n'importe quel UIColor vous voulez que le titre soit.

0
Richard Poutier