Vorrei colorare un'immagine con un riferimento di colore. I risultati dovrebbero assomigliare al metodo di fusione Moltiplica in Photoshop, dove i bianchi sarebbero stati sostituiti con la tinta :
Cambierò continuamente il valore del colore.
Follow up: metterei il codice per farlo nel metodo drawRect: del mio ImageView, giusto?
Come sempre, uno snippet di codice sarebbe di grande aiuto nella mia comprensione, al contrario di un collegamento.
Aggiornamento: creazione di sottoclassi di una UIImageView con il codice suggerito da Ramin .
Lo metto in viewDidLoad: del mio controller di visualizzazione:
[self.lena setImage:[UIImage imageNamed:kImageName]];
[self.lena setOverlayColor:[UIColor blueColor]];
[super viewDidLoad];
Vedo l'immagine, ma non viene colorata. Ho anche provato a caricare altre immagini, impostare l'immagine in IB e chiamare setNeedsDisplay: nel mio controller di visualizzazione.
Aggiornamento : drawRect: non viene chiamato.
Aggiornamento finale: ho trovato un vecchio progetto che aveva un imageView impostato correttamente in modo da poter testare il codice di Ramin e funziona a meraviglia!
Ultimo aggiornamento finale:
Per quelli di voi che stanno appena imparando a conoscere Core Graphics, ecco la cosa più semplice che potrebbe funzionare.
Nella tua sottoclasse 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
}