UINavigationBar und das neue iOS 5+ Erscheinungsbild API - how zur Lieferung von zwei hintergrund-Bilder?
Möchte ich nutzen, um die neue iOS 5 Aussehen-API, um benutzerdefinierte hintergrund Bilder für alle UINavigationBar Instanzen in meiner app. Um dies zu tun, es ist so einfach:
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"whatever.png"] forBarMetrics:UIBarMetricsDefault];
Jedoch für jede Instanz, ich will ein anderes Bild, je nach dem Wert der translucent
Eigenschaft, z.B.
//For UINavigationBar instances where translucent returns YES:
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"whatever-translucent.png"] forBarMetrics:UIBarMetricsDefault];
//Otherwise:
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"whatever.png"] forBarMetrics:UIBarMetricsDefault];
Gegeben, dass das Erscheinungsbild APIs scheinen konfiguriert werden, die mit Klassen-Methoden, ist so etwas möglich?
InformationsquelleAutor Mark Beaton | 2011-10-13
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Im moment gibt es keine Möglichkeit, das zu tun, was Sie beschreiben - die Darstellung proxy nicht wissen, etwas über eine bestimmte Instanz an der Zeit, Sie fordern es.
In der Praxis, was Sie wahrscheinlich tun müssen, ist herauszufinden, wie viele lichtdurchlässige bars, die Sie haben würden, v., wie viele nicht-lichtdurchlässige diejenigen, die Sie hatten. Wählen Sie je nachdem, was Sie mehr und nutzen das Aussehen die Vertretung für diesen einen - für die anderen, wenn Sie gehen, um es durchscheinend (oder Fragen Sie für den Vollbild-layout), müssen Sie den hintergrund Bild dann.
In der Zwischenzeit, könnten Sie die Datei, die ein enhancement-request bei http://bugreport.apple.com/ für das, was Sie Fragen? Es ist nicht eine unzumutbare Anforderung. Danke!
Können Sie entweder auf globaler Ebene mit dem Klasse Aussehen proxy oder legen Sie es auf eine Instanz einer Navigationsleiste.
Ich bin derzeit die Einstellung hintergrund auf eine Instanz der nav bar und es scheint zu funktionieren. Ich habe zwei verschiedene navBars mit verschiedenen Hintergründen. Wenn Sie ihn auf eine Instanz, die Sie sollten in der Lage sein Zustand die code.
Wenn Sie einstellen möchten, mithilfe der Methode der Klasse, die Sie festlegen können, für alle:
Werde ich zwar zugeben, dass es ziemlich neu und ich bin gerade es herauszufinden wie die meisten Leute.
Diese Antwort wahrscheinlich nicht viel Hilfe für Sie sein, aber es kann für andere. WENN Sie eine Unterklasse erstellen, können Sie angeben, die Aussehen für jede Unterklasse getrennt. Zum Beispiel habe ich UITableviewCells und eine eigene Klasse, abgeleitet von UITableViewCells. Ich wirklich tun dies für einen Grund, aber ich entdeckte, dass muss ich anrufen [[UITableViewCells Darstellung] setFont:[...]] für beide Klassen speziell.
Da Sie scheinen zu wollen, um so zu tun, basierend auf einer Variablen, die Sie nicht kennen, erst zur Laufzeit, sind Sie wahrscheinlich kein Glück!
Können Sie es so machen, wenn Sie wissen, welche Klassen enthalten, die transluzente bars:
Kann ich nicht verlassen einen Kommentar, also eine Antwort. Rob Whitlow schrieb einen großen Artikel zu diesem Thema. Check it out: http://ios-blog.co.uk/tutorials/ios-custom-ui-series-tabbar-navbar/
Versuchen Sie dies: