Une approche moderne
De façon moderne, pour l'ensemble du contrôleur de navigation… faites-le une fois, lorsque la vue racine de votre contrôleur de navigation est chargée.
[self.navigationController.navigationBar setTitleTextAttributes:
@{NSForegroundColorAttributeName:[UIColor yellowColor]}];
Cependant, cela ne semble pas avoir d'effet dans les vues suivantes.
Approche classique
À l'ancienne, par contrôleur de vue (ces constantes sont pour iOS 6, mais si vous voulez le faire par contrôleur de vue sous iOS 7, vous voudrez la même approche mais avec des constantes différentes):
Vous devez utiliser un UILabel
comme titleView
le navigationItem
.
L'étiquette doit:
- Avoir une couleur d'arrière-plan claire (
label.backgroundColor = [UIColor clearColor]
).
- Utilisez une police système en gras de 20 points (
label.font = [UIFont boldSystemFontOfSize: 20.0f]
).
- Avoir une ombre de noir avec 50% d'alpha (
label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5]
).
- Vous souhaiterez également définir l'alignement du texte sur centré (
label.textAlignment = NSTextAlignmentCenter
( UITextAlignmentCenter
pour les SDK plus anciens).
Définissez la couleur du texte de l'étiquette pour qu'elle soit de la couleur personnalisée que vous souhaitez. Vous voulez une couleur qui ne fasse pas fondre le texte dans l'ombre, ce qui serait difficile à lire.
J'ai travaillé cela par essais et erreurs, mais les valeurs que j'ai trouvées sont finalement trop simples pour qu'elles ne soient pas celles qu'Apple a choisies. :)
Si vous voulez vérifier cela, déposez ce code dans initWithNibName:bundle:
dans l'exemple NavBarPageThreeViewController.m
d' Apple . Cela remplacera le texte par une étiquette jaune. Cela ne doit pas être distingué de l'original produit par le code d'Apple, à l'exception de la couleur.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
{
// this will appear as the title in the navigation bar
UILabel *label = [[[UILabel alloc] initWithFrame:CGRectZero] autorelease];
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont boldSystemFontOfSize:20.0];
label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
label.textAlignment = NSTextAlignmentCenter;
// ^-Use UITextAlignmentCenter for older SDKs.
label.textColor = [UIColor yellowColor]; // change this color
self.navigationItem.titleView = label;
label.text = NSLocalizedString(@"PageThreeTitle", @"");
[label sizeToFit];
}
return self;
}
Edit: Lisez également la réponse d'Erik B ci-dessous. Mon code montre l'effet, mais son code offre un moyen plus simple de le mettre en place sur un contrôleur de vue existant.