Como eu matizaria uma imagem programaticamente no iPhone?
Eu gostaria de colorir uma imagem com uma referência de cor. Os resultados devem parecer com o modo de mistura Multiply no Photoshop, ondebrancos seria substituído pormatiz:
Eu estarei mudando o valor da cor continuamente.
Acompanhamento: Eu colocaria o código para fazer isso no método drawRect: my do ImageView, certo?
Como sempre, umfragmento de código ajudaria muito no meu entendimento, ao contrário de um link.
Atualizar: Subclassificando um UIImageView com o códigoRamin sugerido.
Eu coloquei isso no viewDidLoad: do meu controlador de visão:
[self.lena setImage:[UIImage imageNamed:kImageName]];
[self.lena setOverlayColor:[UIColor blueColor]];
[super viewDidLoad];
Eu vejo a imagem, mas ela não está sendo pintada. Também tentei carregar outras imagens, configurar a imagem no IB e chamar setNeedsDisplay: no meu controlador de visualização.
Atualizar: drawRect: não está sendo chamado.
Atualização final: Eu encontrei um projeto antigo que tinha um imageView configurado corretamente para que eu pudesse testar o código de Ramin e funciona como um encanto!
Atualização final final:
Para aqueles que estão aprendendo sobre o 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
}