iphone uiview alpha

Programación de iPhone: aplicar alfa a padre pero no a vistas de niños



uiview alpha (4)

¿Es posible configurar Alfa en .75 o .50 (transparente) para la vista de Padres pero las vistas / controles de los Niños son opacos (canal Alfa 1.0 - completamente visible)?

Siempre que establezco alfa de mi vista principal en transparente, todas las vistas / controles secundarios también se muestran como transparentes. ¿Hay algún trabajo alrededor?


El padre que actúa como su fondo debe ser cambiado a un hermano antes del contenedor que envuelve a sus hijos. De esa manera puede establecer la transparencia sin afectar a toda la jerarquía.

Esto se vería así.

  • <item-container>
    • <item-background>
    • <children-container>
      • <children/>

Esta jerarquía tendría el mismo orden de visibilidad y le permitiría establecer la opacidad independientemente del contenido del contenedor secundario.


No está 100% seguro de lo que intenta hacer, pero si desea tener una vista de contenedor con un fondo transparente, puede hacerlo configurando la propiedad backgroundColor en [UIColor clearColor]. De esa manera puede ver a través del fondo, pero todas las subvistas permanecerán opacas. Si desea que el fondo sea semitransparente, use [UIColor colorWithRed: green: blue: alpha:].

Si desea que la vista completa sea semitransparente, mientras que otras no lo son, tendrá que convertirlos en hermanos.


Sé que esta es una respuesta tardía, y algo ya ha sido aceptado, pero encontré que la mejor solución para mí no es establecer la transparencia de UIView directamente, sino que establecer su color de fondo a 0,0,0,0, por lo que El color totalmente transparente.


Una forma más sencilla también es posible sin hacer las vistas hermanos. No establezca el alfa directamente en la vista principal. En lugar de usar

[parentView setBackgroundColor:[[UIColor clearColor] colorWithAlphaComponent:0.5]];

Ahora, cualquier vista infantil puede tener su propio color y NO será transparente.

En Swift, esto sería

parentView.backgroundColor = UIColor.clearColor().colorWithAlphaComponent(0.7)