2010-11-23 9 views
0

G'day AlleiPhone - Wie stelle ich eine benutzerdefinierte Farbe in der Navigationsleiste des "Mehr" -Eintrags ein?

Dies ist ein kleines Detail, aber es wirkt sich auf das professionelle Finish meiner App.

Meine App folgt dem Muster einer Tab-Leiste mit einer Navigationsleiste auf jeder Registerkarte mit mehr als 5 Tabs, daher ein "Mehr" -Element. Ich habe einen benutzerdefinierten Farbton auf die Navigationsleiste angewendet, aber ich konnte keine Möglichkeit finden, auf die Navigationsleiste des "Mehr" -Eintrags zuzugreifen, um den Farbton darauf einzustellen. Kann mir jemand sagen wie?

Update ...

Vorschlag einer Kategorie auf UINavigationBar Im Anschluss ich diesen Code verwendet ...

@implementation UINavigationBar (UINavigationBar_Additions) 

- (void)drawRect:(CGRect)rect { 
    UIColor *color = [UIColor colorWithRed:0.862745098039216 
            green:0.568627450980392 
             blue:0.098039215686275 
            alpha:1]; 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetFillColor(context, CGColorGetComponents([color CGColor])); 
    CGContextFillRect(context, rect); 
    [self setBarStyle:UIBarStyleBlack]; 
    [self setTintColor:color]; 
} 

@end 

Abgesehen von Apples Warnung (aus Gründen, die mir sinnvoll erscheinen lassen) über versteckte Methoden wie diese nicht überschreiben es auch den Gradienten auf dem UINavigationBar & Ich würde lieber das, was mein aktueller Ansatz der Einstellung der Farbton in viewDidLoad tut.

Irgendwelche Vorschläge, wie ich meinen Kuchen essen kann & es auch essen.

TIA, Pedro :)

+0

möglich Duplikat von [ Ändern UINavigationbar Farbe für "Mehr" Registerkarte?] (Http://stackoverflow.com/questions/4139719/change-uinavigationbar-color-for-more-tab) –

+0

Dank Jeff Kelley habe ich dies gelöst. Es ist in mancher Hinsicht eine kleine Sache, aber es führt zu einem schönen professionellen Abschluss meiner App. – Pedro

Antwort

2

Es wurde before on StackOverflow abgedeckt, was zu this blog Punkte, aber die Antwort ist folgendes zu tun:

tabBarController.moreNavigationController.navigationBar.tintColor = 
[UIColor orangeColor]; 
+0

Oh, das ist eine Sache von großer Schönheit, danke :) Schade, dass ich diesen früheren Beitrag nicht gefunden habe, als ich mich umgesehen habe, bevor ich gefragt habe. – Pedro

+0

Dies tönt alles. Was ist, wenn Sie nur die Hintergrundfarbe getönt möchten? – jjxtra

1

eine Kategorie UINavigationBar hinzufügen und außer Kraft setzen -drawRect :? (Sie können dann Spaß Dinge wie das Zeichnen eines Bildes statt ...)

+0

Ich habe das mit Ergebnissen versucht, die ich in eine Bearbeitung einfügen werde. – Pedro

+0

Das ist nicht, wie Sie '-drawRect: 'vernünftig überschreiben; Es beinhaltet in der Regel etwas, das manche Leute "Method Swizzling" nennen (traditionell über einen Aufruf von 'method_exchangeImplementations()'); Sie müssen dies tun, weil Superaufruf die Superklassenimplementierung aufruft, nicht die ursprüngliche Implementierung in der Klasse. Ich dachte, Sie könnten einfach die Farbtonfarbe einstellen und dann die ursprüngliche Implementierung aufrufen. –

Verwandte Themen