Haciendo transparente el primer plano de UIView

Estoy modificando una aplicación IOS para permitir una capa de background adicional. Todas las superposiciones existentes son UIImageViews , que manejan la transparency muy bien.

El background existente es la UIView principal. Quiero cambiar el background negro a transparent para poner otra vista atrás. No funciona. El código más simple que no funciona como espero es el siguiente:

 # import "TestUIView.h" @implementation TestUIView - (void)drawRect:(CGRect)rect { self.opaque = NO; [self setBackgroundColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:0]]; CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetRGBFillColor(context, 0,0,0,0); CGContextFillRect(context, rect); // and here goes my code where I draw to the transparent background } @end 

Cuando esto se ejecuta, produce un rectángulo negro. He establecido su background transparente y lleno su primer plano con transparencia. ¿Qué tengo que hacer para get una UIView donde puedo dibujar contra un background transparente?

(Y sé que puedo cambiar el alpha de la vista en general, ese no es el problema. Quiero un dibujo opaco sobre un background verdaderamente transparente).

ACTUALIZACIÓN: no está en el setbackgroundcolor, aprecio que no es necesario y que no debería estar allí, pero sucede lo mismo si se comenta. No puedo dibujar contra un background transparente; el código de arriba muestra que ni siquiera puedo hacer un rectángulo transparente para dibujar.

Gracias

Por defecto, el valor de opaque es NO . Además, si establece el alfa en 0, la vista será completamente invisible para el usuario. Si desea tener transparencia, debe tener un valor alfa mayor que 0 y menor que 1.

Además, la propiedad backgroundColor se utiliza para establecer el color de la vista en lugar de dibujar ese color usted mismo.

Si necesita cambiar el color de background en drawRect , deberá dibujarlo usted mismo:

 self.backgroundColor=yourColorWithSomeAlphaValue;// [self.backgroundColor setFill]; CGContextFillRect(UIGraphicsGetCurrentContext(), rect); 

Se proporciona más explicación aquí: