2011-05-24 9 views
39

Tengo una UIView con un alfa de 0.5 que agrego como una subvista a mi vista principal para atenuar todo lo demás. Deseo agregar una UIView adicional a esta UIView gris como una subvista: el problema es que cuando hago esto, la subvista recién agregada también es parcialmente transparente.¿Cómo puedo tener una UIView opaca como subvista de una UIView semitransparente?

¿Hay alguna manera de hacer que una subvista "ignore" el valor alfa de su supervista y sea completamente opaca?

Respuesta

12

No, realmente no. Lo que desea es tomar su vista de superposición y hacer que solo tenga un color de fondo claro. Como una subvista de esa nueva superposición, coloque su vista que aclarará las cosas. Y como punto de vista de un hermano para poner su punto de vista, quiere ser opaco.

[OpaqueView] [DimmingView] 
    |    | 
     [OverlayView] 
+42

Aún más simple: simplemente uso esto como el color de fondo: 'UIColor * bg = [UIColor colorWithRed: 0.0 verde: 0.0 azul: 0.0 alfa: 0.5];', así que no tengo que agregar una vista de superposición adicional. – MusiGenesis

+2

Eso es lo que obtengo para responder preguntas antes de mi café. Esta es la respuesta correcta. –

+0

@MusiGenesis: te amo. – Ahsan

1

No, cualquier vista heredará la opacidad de su elemento primario.

+0

Normalmente tengo una vista de dimmer específicamente para atenuar los elementos (por ejemplo cuando uso un campo de texto) pero esto está debajo de todo lo que quiero mostrar como habilitado, pero por encima de cualquier cosa que quiera deshabilitar. –

2

No lo ponga dentro de la vista semitransparente. Conviértalo en una vista de hermana a semitransparente y póngalo sobre ella mediante el orden z.

+0

Si está tratando con algo más que fondos de colores, esta parece ser la respuesta real aquí ... –

2

Esto solo funcionará si tiene alguna imagen en el fondo.

En lugar de reducir el alpha de UIView, añadir una UIImageView en ese punto de vista y luego reducir el alfa de la UIImageView.

ahora agregue sus subvistas en el UIView.

sus subvistas no tomarán la propiedad alpha ya .. :)

108

establecer el color de fondo alfa UIView No Es alfa directamente.

Objective-C

UIView *view; 
... 
view.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:.6]; 

No es lo mismo que:

view.backgroundColor = [UIColor blackColor];  
view.alpha = .6; 

Swift 3

view.backgroundColor = UIColor.black.withAlphaComponent(0.6) 

Swift 2,3

+5

Buen truco, aprenda algo nuevo todos los días . – kyleturner

+2

¡Funciona como un encanto! – Ele

+2

Esto es increíble, gracias! – kernix

Cuestiones relacionadas