Eu gostaria de colorir uma imagem com uma referência de cor. Os resultados devem ser semelhantes ao modo de mesclagem Multiply no Photoshop, onde os brancos seriam substituídos por matiz :
Eu estarei mudando o valor da cor continuamente.
Acompanhamento: Eu colocaria o código para fazer isso no método drawRect: do meu ImageView, certo?
Como sempre, um trecho de código ajudaria muito no meu entendimento, ao contrário de um link.
Atualização: Subclassificação de um UIImageView com o código sugerido por Ramin .
Eu coloquei isso em viewDidLoad: do meu controlador de visualização:
[self.lena setImage:[UIImage imageNamed:kImageName]];
[self.lena setOverlayColor:[UIColor blueColor]];
[super viewDidLoad];
Eu vejo a imagem, mas não está sendo tingida. Também tentei carregar outras imagens, definindo a imagem no IB e chamando setNeedsDisplay: no meu controlador de visualização.
Update : drawRect: não está sendo chamado.
Atualização final: encontrei um projeto antigo que tinha um imageView configurado corretamente para que eu pudesse testar o código do Ramin e funciona perfeitamente!
Atualização final, final:
Para aqueles que estão aprendendo sobre Core Graphics, aqui está a coisa mais simples que poderia funcionar.
Em seu UIView subclasse:
- (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
}