Je voudrais teinter une image avec une référence de couleur. Les résultats devraient ressembler au mode de fusion Multiplier dans Photoshop, où les blancs seraient remplacés par une teinte :
Je changerai la valeur de la couleur en continu.
Suivi: je mettrais le code pour faire cela dans la méthode drawRect: de mon ImageView, non?
Comme toujours, un extrait de code aiderait grandement à ma compréhension, par opposition à un lien.
Mise à jour: sous-classer une UIImageView avec le code suggéré par Ramin .
Je mets ceci dans viewDidLoad: de mon contrôleur de vue:
[self.lena setImage:[UIImage imageNamed:kImageName]];
[self.lena setOverlayColor:[UIColor blueColor]];
[super viewDidLoad];
Je vois l'image, mais elle n'est pas teintée. J'ai également essayé de charger d'autres images, de définir l'image dans IB et d'appeler setNeedsDisplay: dans mon contrôleur de vue.
Mise à jour : drawRect: n'est pas appelé.
Dernière mise à jour: j'ai trouvé un ancien projet avec une imageView correctement configurée pour que je puisse tester le code de Ramin et cela fonctionne comme un charme!
Dernière mise à jour finale:
Pour ceux d'entre vous qui viennent juste d'apprendre les Core Graphics, voici la chose la plus simple qui pourrait éventuellement fonctionner.
Dans votre UIView sous-classée:
- (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
}