nowoczesne podejście
Nowoczesny sposób dla całego kontrolera nawigacji ... to zrobić raz, kiedy widok główny kontroler nawigacyjnego jest załadowany.
[self.navigationController.navigationBar setTitleTextAttributes:
@{NSForegroundColorAttributeName:[UIColor yellowColor]}];
Jednak nie wydaje się mieć wpływ w kolejnych widoków.
klasyczne podejście
Stary sposób, na widoku kontrolera (te są stałe dla iOS 6, ale jeśli chcesz to zrobić za widok kontrolera na iOS 7 wyglądu będziemy chcieli to samo podejście, ale z różnych stałych):
Trzeba użyć UILabeljako titleViewz navigationItem.
Etykieta powinna:
- Mieć jasny kolor tła (
label.backgroundColor = [UIColor clearColor]).
- Użyj pogrubioną czcionką 20pt systemu (
label.font = [UIFont boldSystemFontOfSize: 20.0f]).
- Mają cień czerni 50% alfa (
label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5]).
- Będziemy chcieli, aby ustawić wyrównanie tekstu do skoncentrowany, jak również (
label.textAlignment = NSTextAlignmentCenter( UITextAlignmentCenterdla starszych SDK).
Ustaw kolor tekstu etykieta być cokolwiek zwyczaj kolor chcesz. Ty chcesz kolor, który nie powoduje tekst do wtapiają się cieniem, który byłby trudny do odczytania.
Pracowałem na to uwagę metodą prób i błędów, ale wartości wymyśliłem są ostatecznie zbyt proste dla nich nie będzie co wziął jabłko. :)
Jeśli chcesz, aby to sprawdzić, spadek ten kod do initWithNibName:bundle:IN PageThreeViewController.mz próbki NavBar Apple'a . Spowoduje to zastąpienie tekstu z żółtej etykiecie. Powinno to być nie do odróżnienia od oryginału produkowanego przez kod Apple, 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: Również odczytać odpowiedź Erik B poniżej. Mój kod pokazuje wpływ, ale jego kod oferuje prostszy sposób na wyrzucenie tego w miejscu na istniejącym kontrolerze widoku.