approccio moderno
Il modo moderno, per tutto il controller di navigazione ... fare questo una volta, quando vista radice del vostro controller di navigazione viene caricato.
[self.navigationController.navigationBar setTitleTextAttributes:
@{NSForegroundColorAttributeName:[UIColor yellowColor]}];
Tuttavia, questo non sembra avere un effetto nelle viste successive.
approccio classico
Il vecchio modo, per ogni controller della vista (queste costanti sono per iOS 6, ma se voglio farlo per controller vista su iOS 7 aspetto si vorrà lo stesso approccio, ma con differenti costanti):
È necessario utilizzare un UILabelcome titleViewdel navigationItem.
L'etichetta dovrebbe:
- Hanno un colore di sfondo chiaro (
label.backgroundColor = [UIColor clearColor]).
- Utilizzare grassetto sistema 20pt (
label.font = [UIFont boldSystemFontOfSize: 20.0f]).
- Avere l'ombra di nero con il 50% alfa (
label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5]).
- Ti consigliamo di impostare l'allineamento del testo alla centrato così (
label.textAlignment = NSTextAlignmentCenter( UITextAlignmentCenterper SDK più anziani).
Impostare il colore del testo dell'etichetta di essere qualsiasi colore personalizzato vuoi. Volete un colore che non causa il testo di fondere in ombra, che sarebbe difficile da leggere.
Ho lavorato questo fuori attraverso tentativi ed errori, ma i valori sono arrivato fino a sono in ultima analisi, troppo semplice per loro di non essere quello che Apple raccolto. :)
Se si desidera verificare questo, cadere questo codice in initWithNibName:bundle:in PageThreeViewController.mdi campione NavBar di Apple . Questo sostituirà il testo con un'etichetta gialla. Questo dovrebbe essere indistinguibile dall'originale prodotto dal codice di Apple, tranne che per il colore.
- (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: Inoltre, leggere la risposta di Erik B di seguito. Il mio codice mostra l'effetto, ma il suo codice offre un modo semplice per eliminare questo in luogo su un controller vista esistente.