Nowoczesne podejście
Nowoczesny sposób dla całego kontrolera nawigacyjnego… zrób to raz, gdy załadowany jest widok główny kontrolera nawigacyjnego.
[self.navigationController.navigationBar setTitleTextAttributes:
@{NSForegroundColorAttributeName:[UIColor yellowColor]}];
Nie wydaje się to jednak mieć wpływu na kolejne widoki.
Klasyczne podejście
Stary sposób na kontroler widoku (te stałe są dla iOS 6, ale jeśli chcesz to zrobić dla kontrolera widoku na wygląd iOS 7, będziesz chciał tego samego podejścia, ale z różnymi stałymi):
Trzeba użyć UILabel
jako titleView
z navigationItem
.
Etykieta powinna:
- Mają wyraźny kolor tła (
label.backgroundColor = [UIColor clearColor]
).
- Użyj pogrubionej czcionki systemowej 20pt (
label.font = [UIFont boldSystemFontOfSize: 20.0f]
).
- Mają cień czerni z 50% alfa (
label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5]
).
- Będziesz także chciał ustawić wyrównanie tekstu na wyśrodkowane (
label.textAlignment = NSTextAlignmentCenter
( UITextAlignmentCenter
dla starszych zestawów SDK).
Ustaw kolor tekstu etykiety na dowolny niestandardowy kolor. Potrzebujesz koloru, który nie powoduje wtopienia się tekstu w cień, co byłoby trudne do odczytania.
Opracowałem to metodą prób i błędów, ale wartości, które wymyśliłem, są ostatecznie zbyt proste, aby nie były tym, co wybrał Apple. :)
Jeśli chcesz to zweryfikować, upuść ten kod initWithNibName:bundle:
w próbce NavBarPageThreeViewController.m
firmy Apple . Spowoduje to zastąpienie tekstu żółtą etykietą. Powinno to być nie do odróżnienia od oryginalnego kodu Apple'a, z wyjątkiem koloru.
- (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;
}
Edycja: Przeczytaj także odpowiedź Erika B. Mój kod pokazuje efekt, ale jego kod oferuje prostszy sposób na umieszczenie go w istniejącym kontrolerze widoku.