iOS 7 UIButtonBarItem-Bild tönt nicht

7

In meiner Navigationsleiste habe ich ein paar rightBarButtonItems mit benutzerdefinierten Symbolen (die Symbolbilder sind weiß, was gut mit dem grundlegenden Farbschema von iOS 6 funktioniert hat).

Unter iOS 7 ersetzt das Laden der Bilder mit initWithTitle (siehe Codeausschnitt 1) ​​die "weiße" Farbe im Icon durch den richtigen globalen Farbton (in diesem Fall eine bestimmte Farbe von dunkelblau)

Code-Snippet 1 :

%Vor%

Allerdings musste ich initWithCustomView verwenden, um eine merkwürdige Änderung des Verhaltens zu beheben, die dazu führte, dass die Symbole nicht mehr sichtbar waren. Die Grundidee war, die Größe der Symbole festzulegen. initWithCustomView löste das Größenproblem, zeigt jedoch die Schaltflächenbilder mit dem globalen Farbton nicht an, sie werden in der Farbe des Bildes (weiß) angezeigt. Code-Snippet 2 zeigt, wie ich die Schaltfläche mit initWithCustomView erstelle.

Code-Snippet 2 :

%Vor%

All dieser Code ist natürlich in (void) viewDidLoad. Ich habe versucht, Dinge wie:

%Vor%

oder     [barButtonAppearance setTintColor: [UIColor blackColor]]; // funktioniert nicht

und sie überschreiben nicht die weiße Farbe des Bildes. Es ist fast so, als ob die Erstellung der benutzerdefinierten Ansicht stattfindet, nachdem die Ansicht die globale Farbtonfarbe betrachtet hat?

Wie kann ich sicherstellen, dass das Schaltflächensymbol den globalen Farbton annimmt?

Danke!

    
JMC 07.11.2013, 18:10
quelle

2 Antworten

19

Ich wollte nur einen Root-Kommentar erstellen, um dem "Antwort" -Kästchen einen besseren Kontext zu geben und eine bessere Formatierung zu erhalten.

Ich konnte das herausfinden! Sie können festlegen, dass das Bild immer als Vorlage gerendert wird, wodurch es gezwungen wird, die globale Farbtonfarbe anzunehmen.

%Vor%

Der Standardwert ist, wenn Sie ihn nicht festlegen, "UIImageRenderingModeAutomatic", was bedeutet, dass er als Vorlage oder Originalbild basierend auf dem Kontext wiedergegeben wird.

    
JMC 10.11.2013, 20:32
quelle
1

Sie müssen entweder das Problem umgehen, das Sie mit dem ersten Code-Snippet hatten, oder Sie müssen eine UIButton-Unterklasse erstellen, die ihr Bild als Maske verwendet, um die Farbtonfarbe in drawRect: .

Ich würde den ersten Ansatz empfehlen.

    
paulrehkugler 07.11.2013 18:20
quelle