Chciałbym zabarwić obraz za pomocą odniesienia koloru. Rezultat powinien wyglądać jak tryb mieszania Pomnóż w Photoshopie, w którym biel zostałaby zastąpiona odcieniem :
Będę zmieniać wartość koloru w sposób ciągły.
Kontynuacja: umieściłbym kod, aby to zrobić w metodzie drawRect: mojego ImageView, prawda?
Jak zawsze fragment kodu znacznie pomógłby mi w zrozumieniu, w przeciwieństwie do linku.
Aktualizacja: podklasa UIImageView z kodem sugerowanym przez Ramin .
Umieściłem to w viewDidLoad: mojego kontrolera widoku:
[self.lena setImage:[UIImage imageNamed:kImageName]];
[self.lena setOverlayColor:[UIColor blueColor]];
[super viewDidLoad];
Widzę obraz, ale nie jest zabarwiony. Próbowałem też 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 Ramina i działa jak urok!
Ostateczna, ostateczna aktualizacja:
Dla tych, którzy dopiero uczą się o Core Graphics, oto najprostsza rzecz, która może zadziałać.
W Twojej podklasie 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
}