Wie würde ich ein Bild programmgesteuert auf dem iPhone tönen?

Ich möchte ein Bild mit einem Farbbezug einfärben. Die Ergebnisse sollten wie im Mischmodus "Multiplizieren" in Photoshop aussehenWeiße würde durch ersetzt werdenFarbton:

Ich werde den Farbwert kontinuierlich ändern.

Nachverfolgen: Ich würde den Code dazu in die drawRect: -Methode meiner ImageView einfügen, oder?

Wie immer aCode-Auszug würde in meinem Verständnis sehr helfen, im Gegensatz zu einem Link.

Aktualisieren: Subklassifizierung einer UIImageView mit dem CodeRamin empfohlen.

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 einzustellen und setNeedsDisplay: in meinem View-Controller aufzurufen.

Aktualisieren: drawRect: wird nicht aufgerufen.

Letzte Aktualisierung: Ich habe ein altes Projekt gefunden, in dem ein ImageView richtig eingerichtet war, damit ich Ramins Code testen konnte, und es funktioniert wie ein Zauber!

Endgültige, endgültige Aktualisierung:

Für diejenigen unter Ihnen, die gerade etwas über Core Graphics lernen, ist hier das Einfachste, was 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
}

Antworten auf die Frage(13)

Ihre Antwort auf die Frage