iOS que controla el comportamiento de UIView alpha para subviews


En mi ejemplo, tengo 3 vistas: una vista roja que contiene dos vistas blancas. Cambio el alfa de la vista del contenedor rojo a 0.3 y esto sucede (mira la imagen, el resultado actual).

Al ver esto, solo puedo asumir (dime si me equivoco) que establecer el alfa de una vista también establecerá todos los alfas de sus subviews. Mi pregunta es: ¿hay una manera de simplemente decirle a la vista roja que actúe como un todo para que el ajuste de su alfa daría algo que se parece al resultado deseado (en la imagen)?

resultado

Esto es lo que parece sin ningún alfa:

introduzca la descripción de la imagen aquí

Author: Louis Boux, 2011-12-21

3 answers

Echa un vistazo a las posibles claves de UIKit para obtener información.plist, específicamente UIViewGroupOpacity.

UIViewGroupOpacity (Boolean-iOS) especifica si la animación principal las subcapas heredan la opacidad de su super capa.

Info.plist UIKit Keys

 12
Author: Mark Adams,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-20 21:12:12

Para elaborar la respuesta de Marcos: Si se establece UIViewGroupOpacity en la Información.plist, cambiará el comportamiento de todas las vistas en su aplicación, si está interesado en solo arreglar la representación de esta vista en particular, también podría usar este fragmento:

redContainerView.layer.shouldRasterize = YES;
// No setting rasterizationScale, will cause blurry images on retina.
redContainerView.layer.rasterizationScale = [[UIScreen mainScreen] scale];
 20
Author: Torsten,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-12 15:00:52

La propiedad alfa de IOS es heredada por sus subviews . Si estamos configurando alfa 0.3 para la vista roja, entonces ambos subview tendrán el alfa = 0.3. No hay forma de detener subview para heredar el valor alfa de su súper vista .

La solución podría ser . Puede establecer el color de la vista roja con alpha 0.3. La propiedad Color no será inherente por su subview. Yor puede utilizar el código siguiente

    [redView setBackgroundColor:[UIColor colorWithHue:238.0f/255.0f saturation:24.0f/255.0f brightness:24.0f/255.0f alpha:0.3]];
 14
Author: Nanda,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-28 12:32:04