Wie kann ich die Farbe der Navigationsleiste von der blauen Standardfarbe ändern?Farbe der Navigationsleiste ändern
Danke.
Wie kann ich die Farbe der Navigationsleiste von der blauen Standardfarbe ändern?Farbe der Navigationsleiste ändern
Danke.
Die UINavigationBar
Klasse verfügt über eine UIColor *tintColor
Eigenschaft, die Sie im Code ändern können.
Alternativ wird diese Eigenschaft auch im Interface-Builder-UI-Design-Tool verfügbar gemacht.
Vielen Dank für Ihre Antwort. Können Sie mir bitte Bescheid geben, wenn ich ein Bild als Hintergrund für die Navigationsleiste verwenden kann? – ebaccount
Um es auf ein Bild zu setzen, können Sie ein Muster für Ihre UIColor verwenden: UIImage * patternImage = [UIImage imageNamed: @ "background.png"]; UIColor * myColor = [UIColor colorWithPatternBild: patternImage]; yourNavigationController.navigationBar.tintColor = myColor; Ich habe das nicht versucht, also YMMV. Wenn es nicht funktioniert, müssen Sie die UINavigationBar (nicht die einfachste der Aufgaben) Unterklasse. – pixel
@pixel Die UINavigationBar scheint leider keine UIColor mit colorWithPatternImage zu akzeptieren. Das scheint eine schwarze Navigationsleiste zu erzeugen. –
Angenommen, Sie haben die Navigationsleiste programmgesteuert und nicht im Interface Builder hinzugefügt, legen Sie dies einfach in Ihre viewDidLoad-Methode.
Die TintColor-Eigenschaft wirkt sich nicht auf die Standarduntersicht der Navigationsleiste als untere Grenze und Schatten aus. Manchmal ist es sinnvoll, das Layout der Navigationsleiste zu überschreiben.
Obwohl navigationBar schreibgeschützte Eigenschaft für UINavigationController ist, können Sie diese Einschränkung umgehen durch "setValue: forKey:" . Diese Methode wurde für 5 erfolgreich im AppStore eingereichte Anwendungen genehmigt.
Sie können die UINavigationBar von der Unterklasse ableiten und die drawRect: -Methode wie gewünscht ändern. Zum Beispiel
@implementation CustomNavigationBar
- (void) drawRect:(CGRect)rect
{
[super drawRect:rect];
UIImage *backgroundImage = ImageFromColor(WANTED_COLOR);
[backgroundImage drawInRect:rect];
}
Nachdem Sie UINavigationController Unterklasse und ändern initWithRootViewController:
- (id) initWithRootViewController:(UIViewController *)rootViewController
{
self = [super initWithRootViewController:rootViewController];
if (self)
{
CustomNavigationBar *navBar = [CustomNavigationBar new];
[self setValue:navBar forKey:@"navigationBar"];
}
return self;
}
Auch können Sie diesen Ansatz ändern sich je nach Kategorie für UINavigationController Herstellung und Verfahren Swizzling für initWithRootViewController Umsetzung:
P. S. Gestern erschien meine neue App ohne Probleme bei AppStore.
Dies ist sehr nah an diese Frage: http://StackOverflow.com/Questions/901542/using-image-or-tint-color-on-uinavigationbar-in-iphone –