approche moderne
La façon moderne, pour le contrôleur de navigation ensemble ... faire une fois, lorsque la vue racine de votre contrôleur de navigation est chargé.
[self.navigationController.navigationBar setTitleTextAttributes:
@{NSForegroundColorAttributeName:[UIColor yellowColor]}];
Cependant, cela ne semble pas avoir un effet dans les vues suivantes.
approche classique
L'ancienne façon, par contrôleur de vue (ces constantes sont pour iOS 6, mais si vous voulez le faire par contrôleur de vue sur l'apparence iOS 7, vous aurez envie de la même approche, mais avec des constantes différentes):
Vous devez utiliser un UILabelcomme titleViewde la navigationItem.
L'étiquette doit:
- Avoir une couleur de fond clair (
label.backgroundColor = [UIColor clearColor]).
- Utiliser la police du système 20pt gras (
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 souhaitez définir l'alignement du texte sur Centré ainsi (
label.textAlignment = NSTextAlignmentCenter( UITextAlignmentCenterpour SDKs plus).
Définissez la couleur du texte de l'étiquette pour être quelle couleur personnalisée que vous souhaitez. Vous ne voulez une couleur qui ne provoque pas le texte de se fondre dans l'ombre, ce qui serait difficile à lire.
J'ai travaillé ceci par essais et erreurs, mais les valeurs que je suis venu avec sont finalement trop simple pour eux de ne pas être ce que Apple a pris. :)
Si vous voulez vérifier, laissez tomber ce code dans initWithNibName:bundle:dans PageThreeViewController.mde l'échantillon de NavBar d'Apple . Cela remplacera le texte avec une étiquette jaune. Ce de l'original devrait être impossible à distinguer par le code produit 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: De plus, lisez la réponse de Erik B ci-dessous. Mon code montre l'effet, mais son code offre un moyen plus simple de laisser tomber ce en place sur un contrôleur de vue existante.