UINavigationBar und die neue iOS 5+ Appearance API - Wie liefert man zwei Hintergrundbilder?

8

Ich möchte die neue iOS 5-API für die Darstellung nutzen, um allen UINavigationBar-Instanzen in meiner App benutzerdefinierte Hintergrundbilder zu liefern. Um dies zu tun, ist es so einfach:

%Vor%

Ich möchte jedoch für jede Instanz ein anderes Bild bereitstellen, abhängig vom Wert der Eigenschaft translucent , z. B.

%Vor%

Da die Appearance-APIs anscheinend mit Klassenmethoden konfiguriert sind, ist so etwas möglich?

    
Mark Beaton 13.10.2011, 23:22
quelle

6 Antworten

4

Im Moment gibt es keine Möglichkeit, das zu tun, was Sie beschreiben. Der Erscheinungs-Proxy weiß zu dem Zeitpunkt, zu dem Sie ihn aufrufen, nichts über eine bestimmte Instanz.

In der Praxis müssen Sie wahrscheinlich herausfinden, wie viele durchscheinende Balken Sie v. wie viele nicht durchscheinende haben würden. Wählen Sie das, von dem Sie mehr haben, und verwenden Sie den Darstellungs-Proxy für das andere. Wenn Sie es transparent machen (oder nach einem Vollbild-Layout fragen), müssen Sie das Hintergrundbild dann einstellen.

Können Sie in der Zwischenzeit unter Ссылка eine Verbesserungsanfrage einreichen, um was Sie bitten? Es ist keine unangemessene Bitte. Danke!

    
Chris Parker 14.10.2011, 00:15
quelle
4

Sie können es entweder global mit dem Proxy für die Klassendarstellung festlegen oder für eine Instanz einer navBar festlegen.

Ich setze gerade Hintergrund für eine Instanz der Navigationsleiste und es scheint zu funktionieren. Ich habe zwei verschiedene navBars mit unterschiedlichen Hintergründen. Wenn Sie es für eine Instanz festlegen, sollten Sie in der Lage sein, den Code zu konditionieren.

%Vor%

Wenn Sie mit der Klassenmethode festlegen möchten, können Sie für alle festlegen:

%Vor%

Ich gebe jedoch zu, dass es ziemlich neu ist und ich finde es nur heraus wie die meisten Leute.

    
bryanmac 13.10.2011 23:36
quelle
1

Diese Antwort wird Ihnen wahrscheinlich nicht viel helfen, aber vielleicht auch anderen. Wenn Sie eine Unterklasse erstellen, können Sie die Darstellung für jede Unterklasse separat angeben. Zum Beispiel habe ich UITableviewCells und eine benutzerdefinierte Klasse, die von UITableViewCells abgeleitet ist. Ich tue das eigentlich aus einem Grund, aber ich entdeckte, dass ich [[UITableViewCells Aussehen] setFont: [...]] für beide Klassen spezifisch aufrufen muss.

Da Sie anscheinend auf der Grundlage einer Variablen arbeiten möchten, die Sie bis zur Laufzeit nicht kennen, haben Sie wahrscheinlich kein Glück!

    
Eric Johnson 08.05.2012 15:18
quelle
1

Sie können das so machen, wenn Sie wissen, welche Klassen die durchscheinenden Balken enthalten:

%Vor%     
Accatyyc 27.11.2012 15:35
quelle
0

Ich kann keinen Kommentar hinterlassen, also muss eine Antwort sein. Rob Whitlow hat dazu einen großartigen Artikel geschrieben. Schau es dir an: Ссылка

    
DannyBios 27.12.2013 11:16
quelle
0

Versuchen Sie Folgendes:

%Vor%     
Mritunjay 27.12.2013 12:20
quelle