Je voudrais teinter une image avec une couleur de référence. Le résultat devrait ressembler à la mode de fusion produit dans Photoshop, où les blancs seraient remplacées par de la teinte:
Je vais changer la couleur de la valeur en continu.
Suivi: je mettrais le code pour faire cela dans mon ImageView est drawRect: méthode, non?
Comme toujours, un extrait de code serait grandement aider dans ma compréhension, par opposition à un lien.
Mise à jour: sous-classement d'une UIImageView avec le code Ramin suggéré.
J'ai mis cela dans le viewDidLoad: de mon point de vue, contrôleur:
[self.lena setImage:[UIImage imageNamed:kImageName]];
[self.lena setOverlayColor:[UIColor blueColor]];
[super viewDidLoad];
Je vois l'image, mais il n'est pas teinté. J'ai aussi essayé de charger d'autres images, réglage de l'image de l'IB, et en appelant setNeedsDisplay: de mon point de vue contrôleur.
Mise à jour: drawRect: n'est pas appelée.
Dernière mise à jour: j'ai trouvé un vieux projet qui avait une imageView mis en place correctement, donc j'ai pu tester Ramin code et il fonctionne comme un charme!
Finale, dernière mise à jour:
Pour ceux de vous apprendre au sujet des Graphiques de Base, ici, est la chose la plus simple qui pourrait éventuellement fonctionner.
Dans votre sous-classé UIView:
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColor(context, CGColorGetComponents([UIColor colorWithRed:0.5 green:0.5 blue:0 alpha:1].CGColor)); // don't make color too saturated
CGContextFillRect(context, rect); // draw base
[[UIImage imageNamed:@"someImage.png"] drawInRect: rect blendMode:kCGBlendModeOverlay alpha:1.0]; // draw image
}