Jak programowo zabarwić obraz na iPhonie?

Chciałbym zabarwić obraz odniesieniem do koloru. Wyniki powinny wyglądać jak tryb mieszania wielokrotnego w Photoshopie, gdzieupławy zostanie zastąpiony przezodcień:

Będę ciągle zmieniać wartość koloru.

Zagryźć: Umieściłbym kod, aby to zrobić w metodzie drawRect: draw ImageView, prawda?

Jak zawsze, afragment kodu bardzo pomogłoby w moim zrozumieniu, w przeciwieństwie do linku.

Aktualizacja: Podklasowanie UIImageView za pomocą koduRamin zasugerował.

Umieszczam to w viewDidLoad: mojego kontrolera widoku:

[self.lena setImage:[UIImage imageNamed:kImageName]];
[self.lena setOverlayColor:[UIColor blueColor]];
[super viewDidLoad];

Widzę obraz, ale nie jest on przyciemniany. Próbowałem także załadować inne obrazy, ustawić obraz w IB i wywołać setNeedsDisplay: w moim kontrolerze widoku.

Aktualizacja: drawRect: nie jest wywoływany.

Ostatnia aktualizacja: Znalazłem stary projekt, który miał poprawnie skonfigurowany imageView, więc mogłem przetestować kod Ramin i działa jak urok!

Końcowa, ostateczna aktualizacja:

Dla tych, którzy dopiero poznają Core Graphics, oto najprostsza rzecz, która mogłaby działać.

W podklasowanym UIView:

- (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