J'ai un UIImageView appelé "theImageView", avec UIImage dans une seule couleur (fond transparent) comme le coeur noir gauche ci-dessous. Comment puis-je changer la couleur de teinte de cette image par programme dans iOS 7 ou supérieur, selon la méthode de teinte utilisée dans les icônes de la barre de navigation iOS 7+?
Cette méthode peut-elle également fonctionner dans WatchKit pour une application Apple Watch?
UIImage
avecUIImageRenderingModeAlwaysTemplate
puis la définitionUIImageVIew
detintColor
fonctionne. (dans mon code ^^)Réponses:
iOS
Pour une application iOS, dans Swift 3, 4 ou 5:
Pour Swift 2:
Pendant ce temps, la solution Objective-C moderne est:
Watchkit
Dans WatchKit pour les applications Apple Watch, vous pouvez définir la couleur de teinte d'une image de modèle .
Pour ensuite définir la couleur de teinte dans Swift 3 ou 4:
Swift 2:
Pour ensuite définir la couleur de teinte dans Objective-C:
Si vous utilisez une image de modèle et n'appliquez pas de couleur de teinte, la teinte globale de votre application WatchKit sera appliquée. Si vous n'avez pas défini de teinte globale,
theImage
sera teinté en bleu clair par défaut lorsqu'il est utilisé comme image de modèle.la source
Voici une catégorie qui devrait faire l'affaire
vous feriez donc:
la source
J'ai dû le faire dans Swift en utilisant un
extension
.Je pensais partager ma façon de procéder:
Usage:
theImageView.image = theImageView.image.imageWithColor(UIColor.redColor())
Swift 4
Usage:
theImageView.image = theImageView.image?.imageWithColor(color1: UIColor.red)
la source
color1.setFill()
droite sous la première ligne de la méthodeUIGraphicsBeginImageContextWithOptions(self.size, false, self.scale)
.CGBlendMode.Normal
placeDans les éléments de storyboard et d'image. vous pouvez également modifier ces deux:
Mettre à jour le mode de rendu en image modèle
Mettez à jour la couleur de teinte dans les vues.
la source
imageView.tintColor
du code.Swift 4
Changez la teinte de UIImage SVG / PDF , qui fonctionne pour une image avec une couleur unique :
Changez la teinte de UIImageView , qui fonctionne pour une image avec une couleur unique :
Changer la teinte de UIImage pour l' image , utilisez cela:
la source
Si quelqu'un se soucie d'une solution sans
UIImageView
:la source
Avec Swift
la source
.AlwaysTemplate
.Essaye ça
http://robots.thoughtbot.com/designing-for-ios-blending-modes
ou
la source
Pour des fins rapides 3
theImageView.image = theImageView.image!.withRenderingMode(.alwaysTemplate) theImageView.tintColor = UIColor.red
la source
Pour teinter l'image d'un bouton UIB
la source
iOS
Solution pour le faire depuis Interface Builder, définissez le paramètre templateImage dans keyPath et choisissez votre couleur de teinte dans IB
}
la source
Avec iOS 13 et supérieur, vous pouvez simplement utiliser
la source
Profitez de l'extension dans Swift: -
la source
Version Swift 3 de la réponse d'extension de fuzz
la source
Maintenant, j'utilise cette méthode basée sur la réponse de Duncan Babbage:
la source
la source
Sous-classe qui peut également être utilisée à partir du code et d'Interface Builder:
la source
Ceci est mon extension UIImage et vous pouvez directement utiliser la fonction changeTintColor pour une image.
Exemple d'utilisation comme celui-ci
Et vous pouvez utiliser la
changeColor
fonction de changement pour changer la couleur de l'imagela source
profileImageView.image = theImageView.image! .withRenderingMode (.alwaysTemplate)
profileImageView.tintColor = UIColor.green
OU
Sélectionnez d'abord une image particulière dans l'image, puis sélectionnez rouge comme modèle au lieu de par défaut et après cette ligne d'écriture. profileImageView.tintColor = UIColor.green
la source
si vous avez un identifiant pour l'image SVG, vous pouvez remplir les couleurs par rapport à l'ID.
OU Consultez cet exemple.
https://github.com/ravisfortune/SVGDEMO
la source
la source