2011-09-21 17 views
15

Ho un UIView e voglio che la parte inferiore di esso diventi opacità a 0.Maschera sfumatura su UIView

Può essere eseguito su un UIView (CALayer) per influire su un'intera UIView e sul suo contenuto?

+0

Per gli altri che si affaticano con la maschera gradiente, non funzionerà se applicato a un 'UIStackView'. –

risposta

31

Sì, è possibile farlo impostando CAGradientLayer come maschera di livello della vostra vista:

#import <QuartzCore/QuartzCore.h> 

... 

CAGradientLayer *maskLayer = [CAGradientLayer layer]; 

maskLayer.frame = view.bounds; 
maskLayer.colors = @[(id)[UIColor whiteColor].CGColor, (id)[UIColor clearColor].CGColor]; 
maskLayer.startPoint = CGPointMake(0.5, 0); 
maskLayer.endPoint = CGPointMake(0.5, 1.0); 

view.layer.mask = maskLayer; 

P.S. Devi anche collegare QuartzCore.framework alla tua app per far funzionare le cose.

+0

So che questo è più vecchio, ma qual è il problema con ottenere cgcolor e poi ricollegarli a puntatori? La proprietà 'colors' dice che è una matrice di UIColors. –

+0

abstract from docs - ** colors ** - Un array di oggetti CGColorRef che definiscono il colore di ciascun gradiente. Per archiviarli in NSArray li lanciamo su id. Francamente, pensavo che avessimo bisogno del cast a ponte quando usavamo ARC, ma il codice è stato compilato bene come adesso – Vladimir

+0

grazie, ha funzionato !! – Deeper