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?
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
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
Tags und Links iphone cocoa-touch interface-builder