2011-09-21 17 views
15

Tengo una UIView y quiero que la parte inferior se desvanezca a 0 opacidad.Máscara de degradado en UIView

¿Se puede hacer esto a un UIView (CALayer) para afectar a toda una UIView y su contenido?

+0

Para otros que luchan con la máscara de degradado, no funcionará si se aplica a un 'UIStackView'. –

Respuesta

31

Sí, puede hacerlo mediante el establecimiento de CAGradientLayer como máscara de capa de la 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. También necesita vincular QuartzCore.framework a su aplicación para que todo funcione.

+0

Sé que esto es más antiguo, pero ¿cuál es el problema con obtener cgcolor y luego unirlos de nuevo a los punteros? La propiedad 'colors' dice que es una matriz de UIColors. –

+0

abstract from docs - ** colors ** - Una matriz de objetos CGColorRef que definen el color de cada parada de gradiente. Para almacenarlos en NSArray, los convertimos en id. Francamente, pensé que necesitábamos un reparto en puente cuando usamos ARC, pero el código compilado bien ya que ahora es – Vladimir

+0

¡gracias, funcionó! – Deeper