Ich möchte ein Bild mit einer Farbreferenz tönen. Die Ergebnisse sollten wie im Mischmodus "Multiplizieren" in Photoshop aussehen, bei dem Weiß durch Farbton ersetzt wird :
Ich werde den Farbwert kontinuierlich ändern.
Follow-up: Ich würde den Code dafür in die drawRect: -Methode meines ImageView einfügen, oder?
Wie immer würde ein Code-Snippet im Gegensatz zu einem Link mein Verständnis erheblich verbessern.
Update: Unterklasse einer UIImageView mit dem von Ramin vorgeschlagenen Code .
Ich habe dies in viewDidLoad: meines View Controllers eingefügt:
[self.lena setImage:[UIImage imageNamed:kImageName]];
[self.lena setOverlayColor:[UIColor blueColor]];
[super viewDidLoad];
Ich sehe das Bild, aber es wird nicht getönt. Ich habe auch versucht, andere Bilder zu laden, das Bild in IB festzulegen und setNeedsDisplay: in meinem View Controller aufzurufen.
Update : drawRect: wird nicht aufgerufen.
Letzte Aktualisierung:Letztes Ich habe ein altes Projekt gefunden, in dem imageView richtig eingerichtet war, damit ich Ramins Code testen konnte, und es funktioniert wie ein Zauber!
Endgültiges, endgültiges Update:
Für diejenigen unter Ihnen, die gerade etwas über Core Graphics lernen, ist hier die einfachste Sache, die möglicherweise funktionieren könnte.
In Ihrer untergeordneten 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
}