Me gustaría teñir una imagen con una referencia de color. Los resultados deberían verse como el modo de fusión Multiplicar en Photoshop, donde los blancos se reemplazarían con tinte :
Cambiaré el valor del color continuamente.
Seguimiento: pondría el código para hacer esto en el método drawRect: de mi ImageView, ¿verdad?
Como siempre, un fragmento de código sería de gran ayuda para mi comprensión, a diferencia de un enlace.
Actualización: Subclasificación de un UIImageView con el código que sugirió Ramin .
Pongo esto en viewDidLoad: de mi controlador de vista:
[self.lena setImage:[UIImage imageNamed:kImageName]];
[self.lena setOverlayColor:[UIColor blueColor]];
[super viewDidLoad];
Veo la imagen, pero no está teñida. También intenté cargar otras imágenes, configurar la imagen en IB y llamar a setNeedsDisplay: en mi controlador de vista.
Actualización : drawRect: no se está llamando.
Actualización final: encontré un proyecto antiguo que tenía un imageView configurado correctamente para poder probar el código de Ramin y ¡funciona como un encanto!
Actualización final, final:
Para aquellos de ustedes que recién están aprendiendo sobre Core Graphics, aquí está lo más simple que podría funcionar.
En su UIView subclasificada:
- (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
}