Ich habe eine UIImageView namens "theImageView", mit UIImage in einer einzigen Farbe (transparenter Hintergrund), genau wie das linke schwarze Herz unten. Wie kann ich die Farbtonfarbe dieses Bildes in iOS 7 oder höher programmgesteuert gemäß der in den iOS 7+ Navigationsleistensymbolen verwendeten Farbtonmethode ändern?
Kann diese Methode auch in WatchKit für eine Apple Watch-App funktionieren?
UIImage
mitUIImageRenderingModeAlwaysTemplate
und dann EinstellungUIImageVIew
‚stintColor
arbeiten. (in meinem Code ^^)Antworten:
iOS
Für eine iOS-App in Swift 3, 4 oder 5:
Für Swift 2:
Inzwischen lautet die moderne Objective-C-Lösung:
Watchkit
In WatchKit für Apple Watch-Apps können Sie die Farbtonfarbe für ein Vorlagenbild festlegen .
So stellen Sie die Farbtonfarbe in Swift 3 oder 4 ein:
Swift 2:
So stellen Sie die Farbtonfarbe in Objective-C ein:
Wenn Sie ein Vorlagenbild verwenden und keine Farbtonfarbe anwenden, wird der globale Farbton für Ihre WatchKit-App angewendet. Wenn Sie keinen globalen Farbton festgelegt haben,
theImage
wird dieser standardmäßig hellblau getönt, wenn er als Vorlagenbild verwendet wird.quelle
Hier ist eine Kategorie, die den Trick machen sollte
so würden Sie tun:
quelle
Ich musste dies in Swift mit einem tun
extension
.Ich dachte, ich würde erzählen, wie ich es gemacht habe:
Verwendungszweck:
theImageView.image = theImageView.image.imageWithColor(UIColor.redColor())
Swift 4
Verwendungszweck:
theImageView.image = theImageView.image?.imageWithColor(color1: UIColor.red)
quelle
color1.setFill()
rechts unter die erste Zeile der Methode bewegt habeUIGraphicsBeginImageContextWithOptions(self.size, false, self.scale)
.CGBlendMode.Normal
stattdessen verwendenIn Storyboard- und Image-Assets. Sie können diese beiden auch ändern:
Aktualisieren Sie den Rendermodus auf Vorlagenbild
Aktualisieren Sie die Farbtonfarbe in Ansichten.
quelle
imageView.tintColor
aus Code verwenden.Swift 4
Ändern Sie den Farbton von UIImage SVG / PDF , der für Bilder mit eindeutiger Farbe geeignet ist :
Ändern Sie den Farbton von UIImageView , der für Bilder mit eindeutiger Farbe geeignet ist :
Ändern Sie den Farbton von UIImage für das Bild . Verwenden Sie Folgendes :
quelle
Wenn jemand eine Lösung interessiert ohne
UIImageView
:quelle
Mit Swift
quelle
.AlwaysTemplate
.Versuche dies
http://robots.thoughtbot.com/designing-for-ios-blending-modes
oder
quelle
Für schnelle 3 Zwecke
theImageView.image = theImageView.image!.withRenderingMode(.alwaysTemplate) theImageView.tintColor = UIColor.red
quelle
Zum Abtönen des Bildes eines UIButton
quelle
iOS
Lösung dafür in Interface Builder, setzen Sie den Parameter templateImage in keyPath und wählen Sie Ihre Farbtonfarbe aus IB
}}
quelle
Mit iOS 13 und höher können Sie einfach verwenden
quelle
Nutzen Sie die Erweiterung in Swift: -
quelle
Swift 3 Version der Erweiterung Antwort von Fuzz
quelle
Jetzt benutze ich diese Methode basierend auf Duncan Babbage Antwort:
quelle
quelle
Unterklasse, die auch aus Code und Interface Builder verwendet werden kann:
quelle
Dies ist meine UIImage-Erweiterung und Sie können die changeTintColor-Funktion direkt für ein Bild verwenden.
Beispiel für eine Verwendung wie diese
Und Sie können ändern verwenden
changeColor
Funktion die Bildfarbe zu ändernquelle
profileImageView.image = theImageView.image! .withRenderingMode (.alwaysTemplate)
profileImageView.tintColor = UIColor.green
ODER
Wählen Sie zuerst ein bestimmtes Bild im Bildobjekt aus und wählen Sie dann "Rötung" als "Vorlage" anstelle von "Standard" und danach "Schreibzeile". profileImageView.tintColor = UIColor.green
quelle
Wenn Sie eine ID für das SVG-Bild haben, können Sie die Farben in Bezug auf die ID füllen.
ODER Kasse dieses Beispiel.
https://github.com/ravisfortune/SVGDEMO
quelle
quelle