2009-09-03 13 views
9

Sto cercando di invertire rapidamente i colori di un UIView esistente (diventa negativo, come in un negativo fotografico). O prendere i colori e abbassare la saturazione. Penso che più facile manipolare la bitmap sia prendere un altro UIView che sia tutto bianco (o sfumature) e usare i blendmode per raggiungere i miei obiettivi.Il modo più semplice/veloce per applicare una modalità di fusione tra due UIViews

Non vedo un modo per indirizzare come un UIView viene disegnato sopra a un altro. Anche se eseguo la sottoclasse di UIView, non vedo un modo semplice per disegnare usando una miscela in più. Sembra che dovrò sottoclassi UIImageView che ha un drawrect: withBlendMode.

Qualcuno ha fatto questo in un modo più semplice? Speravo di poter semplicemente impostare una proprietà blendmode su UIView o UIImageView e non dover sottoclasse ...

In pratica, in che modo invertireste rapidamente una vista in modo che il nero sia bianco e il bianco sia nero?

+0

Ciao @mahboudz, hai trovato un modo migliore per farlo? o stai ancora usando in questo modo? Grazie! –

risposta

7

questa sembra essere la soluzione:

Crate una sottoclasse di UIView. Poi in drawRect:

    [self.image drawInRect:rect]; 

    // prepare the context to draw into 
    CGContextRef context = UIGraphicsGetCurrentContext(); 

    // set the blend mode 
    CGContextSetBlendMode(context, kCGBlendModeDifference); 

    // now draw the appropriate color over the whole thing 
    CGContextFillRect(....); 

Sono fuori per provare ora.

+5

E questo ha effettivamente funzionato? So che è pubblicato ovunque, ma funziona? –

Problemi correlati