2012-05-11 8 views
7

Estoy escribiendo una biblioteca de UI en la que me gustaría poder tener el alfa de las UIViews como si se hubiera configurado el UIViewGroupOpacity info.plist ket. Veo siguientes enlaces:Opacidad del grupo UIView en heirachy de vista única

Make UIView and subviews translucent as one layer, not individually

iOS controlling UIView alpha behaviour for subviews

Pero, como estoy escribiendo un lib, no quiero los proyectos a tener que establecer esta clave global, y efectuar el comportamiento del proyecto principal.

¿Hay alguna otra forma de lograr esto? No quiero pasar por todas las subvistas y establecer alfa de cada subvista, ya que el proyecto que incluye mi lib puede tener esta clave habilitada ...

Respuesta

16

Sí, puede establecer shouldRasterize de la capa de la vista.

containerView.layer.shouldRasterize = YES; 
// Not setting rasterizationScale, will cause blurry images on retina displays: 
containerView.layer.rasterizationScale = [[UIScreen mainScreen] scale]; 

Esto tendrá el mismo efecto que UIViewGroupOpacity pero sólo para containerView y es subvistas.

+0

¿Funciona esto si la supervista es LA super visión para la jerarquía? No parece tener ningún efecto en iOS 7. – MobileVet

0

Para iOS 7.0 y posterior:

Desde iOS 7.0, esto se puede controlar de forma individual para cada CALayer través de la propiedad allowsGroupOpacity. Al establecerlo en YES, obtiene el mismo comportamiento que si se hubiera configurado UIViewGroupOpacity, pero solo para esa capa en particular.

Cuestiones relacionadas