¿Cómo puedo tener una UIView opaca como una subvista de una UIView semitransparente?

Tengo una UIView con un alfa de 0.5 que agrego como una subvista a mi vista primaria para eliminar todo lo demás. Quiero agregar una UIView adicional a esta UIView gris como una subvista: el problema es que cuando hago esto, mi subvista recién agregada también es parcialmente transparente.

¿Hay alguna forma de hacer que una subvista "ignore" el valor alfa de su supervisión y sea completamente opaca?

No en realidad no. Lo que quiere es tomar su vista de superposition y hacer que tenga un color de background claro. Como una subvista de esa nueva superposition, coloque su vista en gris. Y como una vista de hermano que pone su vista, quiere ser opaca.

[OpaqueView] [DimmingView] | | [OverlayView] 

Establezca el color de background UIView alfa, no es alfa directamente.

C objective

 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

 view.backgroundColor = UIColor.blackColor().colorWithAlphaComponent(0.6) 

No lo coloque dentro de la vista semitransparente. Haz que sea un hermano a una vista semitransparente y póngalo encima usando el orderamiento z.

Esto solo funcionará si tienes alguna image en el background.

En lugar de networkingucir el alpha de UIView , agregue un UIImageView en esa vista y luego networkinguzca el alfa de UIImageView .

Ahora agregue sus subvenciones en la UIView .

sus subvenciones ya no tomarán la propiedad alfa … 🙂

No, cualquier vista henetworkingará la opacidad de su elemento principal.