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
}

questionAnswers(13)

yourAnswerToTheQuestion