Comment teindre une image/afficher une couleur?
2 choses que je veux faire, qui sont liés:
- Afficher un bloc de n'importe quelle couleur. Si je pouvais changer la couleur de quelque chose d'autre à tout moment.
- Teinte d'une UIImage être d'une couleur différente. Une superposition de couleur avec alpha tourné vers le bas pourraient travailler ici, mais disons que c'est une image qui a un arrière-plan transparent et ne pas occuper toute la place de l'image.
Des idées?
Vous devez vous connecter pour publier un commentaire.
Le premier est facile. Faire une nouvelle
UIView
et de définir sa couleur de fond quelle que soit la couleur que vous souhaitez.Le second est plus difficile. Comme vous l'avez mentionné, vous pouvez mettre un nouveau point de vue sur le dessus de celui-ci avec la transparence tourné vers le bas, mais pour l'obtenir à clip dans les mêmes endroits, vous souhaitez utiliser un masque. Quelque chose comme ceci:
Garder à l'esprit que vous aurez à
#import <QuartzCore/QuartzCore.h>
dans le fichier d'implémentation.contentView
de la vue de la table de la cellule.Une autre option serait d'utiliser la catégorie de méthodes sur UIImage comme ça...
CGContextClipToMask(c, aRect, self.CGImage);
avantUIRectFillUsingBlendMode
. 2) Pour appliquer une véritable teinte, la préservation des valeurs de l'image, utilisez kCGBlendModeColor.CGContextTranslateCTM(c, 0, self.size.height); CGContextScaleCTM(c, 1.0, -1.0);
Voici une autre façon de mettre en image la teinture, surtout si vous utilisez déjà QuartzCore pour quelque chose d'autre.
Importation QuartzCore:
Créer transparent CALayer et l'ajouter en tant que sous-couche pour l'image que vous voulez teinte:
Ajouter QuartzCore à vos projets Cadre de la liste (si elle n'est pas déjà là), sinon vous aurez des erreurs de compilation comme ceci:
Un moyen facile d'atteindre 1 est de créer un UILabel ou même une UIView et modifier le backgroundColor que vous le souhaitez.
Il y a un moyen de multiplier les couleurs au lieu de simplement la superposition entre eux, et qui devrait fonctionner pour les 2. Voir ce tutoriel.
Essayer cette