Approccio moderno
Il modo moderno, per l'intero controller di navigazione ... farlo una volta, quando viene caricata la vista radice del controller di navigazione.
[self.navigationController.navigationBar setTitleTextAttributes:
@{NSForegroundColorAttributeName:[UIColor yellowColor]}];
Tuttavia, ciò non sembra avere effetto nelle viste successive.
Approccio classico
Alla vecchia maniera, per controller di visualizzazione (queste costanti sono per iOS 6, ma se vuoi farlo per controller di visualizzazione sull'aspetto di iOS 7, vorrai lo stesso approccio ma con costanti diverse):
Devi usare a UILabel
come titleView
di navigationItem
.
L'etichetta dovrebbe:
- Avere un colore di sfondo chiaro (
label.backgroundColor = [UIColor clearColor]
).
- Usa il carattere di sistema in grassetto 20pt (
label.font = [UIFont boldSystemFontOfSize: 20.0f]
).
- Avere un'ombra di nero con il 50% di alfa (
label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5]
).
- Ti consigliamo di impostare anche l'allineamento del testo su centrato (
label.textAlignment = NSTextAlignmentCenter
( UITextAlignmentCenter
per SDK meno recenti).
Imposta il colore del testo dell'etichetta su qualsiasi colore personalizzato desideri. Vuoi un colore che non induca il testo a fondersi in ombra, che sarebbe difficile da leggere.
L'ho risolto attraverso tentativi ed errori, ma i valori che ho scoperto sono in fin dei conti troppo semplici per non essere ciò che Apple ha scelto. :)
Se si desidera verificare questo, cadere questo codice in initWithNibName:bundle:
in PageThreeViewController.m
di Apple campione NavBar . Ciò sostituirà il testo con un'etichetta gialla. Questo dovrebbe essere indistinguibile dall'originale prodotto dal codice Apple, ad eccezione del 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;
}
Modifica: leggi anche la risposta di Erik B di seguito. Il mio codice mostra l'effetto, ma il suo codice offre un modo più semplice per inserirlo in un controller di visualizzazione esistente.