UINavigationBar tintColor mit Farbverlauf

8

Ich möchte programmatisch die tintColor einer UINavigationBar ändern und den Gradienten wie in Interface Builder beibehalten.

Wenn ich die tintColor in meinem Code ändere, verschwindet der Farbverlauf, aber wenn ich den tintColor im Interface Builder ändere, wird der Farbverlauf beibehalten.

Irgendwelche Ideen?

    
pbernery 30.01.2009, 09:45
quelle

5 Antworten

20

Das ist also eine alte Frage, aber ich stolperte darüber, als ich nach etwas suchte, das wie diese Frage klingt, aber anders ist. In der Hoffnung, dass es jemand anderem hilft (oder dass jemand anderes mir einen besseren Weg zeigt) ...

Wie implementieren Sie einen benutzerdefinierten Farbverlauf in einer UINavigationBar?

Lassen Sie uns zunächst unseren benutzerdefinierten Farbverlauf so gestalten, wie wir es normalerweise (als CALayer) tun würden:

%Vor%

Da sind wir, ein Farbverlauf, der wie eine fragwürdige Make-up-Wahl eines Punk-Rockers aussieht, was gut ist, da dieser Code für die hypothetische App Ich habe einen Punk-Rocker mit fragwürdigem Geschmack in meiner Tasche Das nenne mich etwas zu lang ..

Jetzt möchte ich diese Ebene auf meiner UINavigationBar, die sollte einfach sein? Füge es einfach als Sublayer hinzu, richtig? Das Problem hier ist, dass es die wundervollen Knöpfe und Sachen verdeckt, die der UINavigationController Ihnen gibt. Das ist schlecht.

Schauen wir uns stattdessen die wunderbare Bequemlichkeitsmethode an, die wir in iOS5 + haben, um das Aussehen aller UINavigationsbar (s) in unserer App zu ändern:

%Vor%

Das einzige Problem hier ist, dass wir kein UIImagage haben, wir haben einen CALayer. Was ist ein Punk-Rocker-Enthusiast zu tun?

%Vor%

So, jetzt haben wir unseren CALayer in einen UIImage konvertiert (hoffentlich), also bleibt nur noch:

%Vor%

Was ich an dieser Lösung mag, ist

  • der zentralisierte Code (in der AppDelegate) für alle UINavigationBar (s) in meiner App
  • tintColor wird weiterhin für alle UINavigation - Schaltflächen (Zurück, Bearbeiten usw.)
  • berücksichtigt
  • Wenn die UIImage-Erstellung fehlschlägt, werden meine UINavigationBar (s) weiterhin die tintColor
  • berücksichtigen
  • Ich muss mich nicht auf eine tatsächliche Bildquelle verlassen / leicht zu aktualisieren

Aber ich bin immer noch nicht überzeugt, dass es der beste Weg ist. Also, viel Spaß, wenn es Ihnen hilft, lassen Sie mich wissen, wie Sie es verbessern können, wenn Sie können.

~ Danke

    
Ryan Crews 26.02.2013 21:45
quelle
14

Setzen Sie den barStyle auf UIBarStyleBlackTranslucent Stellen Sie die Farbtonfarbe wie folgt ein:

%Vor%

Dies wird den geeigneten Gradienten einstellen. Verwenden Sie die Kombination, die Sie brauchen.

    
carlos 08.02.2009 00:32
quelle
1

Ich habe es gerade als UIImage-Erweiterung für Swift 2.0 geschrieben. Vielleicht ist es von Nutzen.

%Vor%

Nennen Sie es so:

%Vor%     
RyuX51 21.09.2015 13:08
quelle
0
%Vor%     
Umair 03.04.2012 19:02
quelle
0

Gute Weise benutze maskView

%Vor%     
ober 21.03.2016 07:14
quelle