Moderner Ansatz
Die moderne Methode für den gesamten Navigationscontroller… tun Sie dies einmal, wenn die Stammansicht Ihres Navigationscontrollers geladen ist.
[self.navigationController.navigationBar setTitleTextAttributes:
@{NSForegroundColorAttributeName:[UIColor yellowColor]}];
Dies scheint jedoch in nachfolgenden Ansichten keine Auswirkungen zu haben.
Klassischer Ansatz
Der alte Weg, pro Ansichts-Controller (diese Konstanten gelten für iOS 6, aber wenn Sie dies pro Ansichts-Controller unter iOS 7 tun möchten, möchten Sie denselben Ansatz, jedoch mit unterschiedlichen Konstanten):
Sie müssen ein UILabel
als das titleView
der verwenden navigationItem
.
Das Etikett sollte:
- Haben Sie eine klare Hintergrundfarbe (
label.backgroundColor = [UIColor clearColor]
).
- Verwenden Sie eine fette 20pt-Systemschrift (
label.font = [UIFont boldSystemFontOfSize: 20.0f]
).
- Haben Sie einen schwarzen Schatten mit 50% Alpha (
label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5]
).
- Sie möchten die Textausrichtung ebenfalls auf zentriert einstellen (
label.textAlignment = NSTextAlignmentCenter
( UITextAlignmentCenter
für ältere SDKs).
Stellen Sie die Etikettentextfarbe auf die gewünschte benutzerdefinierte Farbe ein. Sie möchten eine Farbe, bei der der Text nicht in Schatten übergeht, was schwer zu lesen wäre.
Ich habe das durch Ausprobieren herausgefunden, aber die Werte, die ich mir ausgedacht habe, sind letztendlich zu einfach, als dass sie nicht das wären, was Apple ausgewählt hat. :) :)
Wenn Sie dies überprüfen wollen, fällt diesen Code in initWithNibName:bundle:
in PageThreeViewController.m
dem Apple NavBar Probe . Dadurch wird der Text durch ein gelbes Etikett ersetzt. Dies sollte mit Ausnahme der Farbe nicht von dem Original zu unterscheiden sein, das von Apples Code erstellt wurde.
- (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;
}
Bearbeiten: Lesen Sie auch die Antwort von Erik B unten. Mein Code zeigt den Effekt, aber sein Code bietet eine einfachere Möglichkeit, ihn auf einem vorhandenen Ansichts-Controller zu platzieren.