2010-10-30 20 views
13

Estoy fijando el color de fondo de mi UIView (que está dentro de un UIViewController) de la siguiente manera:iPhone - UIView's backgroundColor - ¿usa un png con transparencia?

myView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"myTransparentBG.png"]]; 

Incluso he intentado jugar con [myView setOpaque:NO]; pero la imagen no aparece transparente. Tiene un fondo negro. ¿Soy capaz de arreglar esto programáticamente? De lo contrario, ¿cómo se supone que debemos establecer un fondo transparente para nuestra vista?

Esto parece una pregunta que debería haberse formulado antes, pero no pude encontrar una respuesta.

Respuesta

32

Al utilizar un patrón transparente, después de establecer la propiedad backgroundColor, debe establecer la propiedad opaque en NO tanto en la vista como en su capa. Aquí hay un ejemplo:

UIView* paperView = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,700)]; 
paperView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"paper.png"]]; 

[paperView.layer setOpaque:NO]; 
paperView.opaque = NO; 
+0

Ajá, esta es la respuesta correcta. No estaba configurando la propiedad opaca de la capa. ¡Gracias! – chaiwalla

+1

Curiosamente debe establecer la propiedad opaca * después de * establecer la imagen de fondo. Debe ser parte del motor de renderizado. –

+0

Gracias Sam, tuve el mismo problema. Además: las dos últimas líneas de este fragmento de código hacen lo mismo. – titaniumdecoy

-1

Utilice esto: myView.backgroundColor = [UIColor clearColor];

Esto lo configurará con un fondo transparente.

+0

¿En ello? Quiero que la imagen sea el fondo. Tengo otros elementos de UI dentro de la vista. – RyanJM

+0

Si configura el color de UIView como clearColor, será transparente. Dependiendo de dónde se ordenan las imágenes y otras vistas, puede jugar con ellas. – Istvan

0

Nunca he hecho esto, pero esto es lo que probaría.

Establezca UIView's .backgroundColor en [UIColor clearColor]. Luego coloque un UIImageView que contenga su PNG como el elemento "más bajo" en la pila de subvistas de UIView. Asegúrese de que el color de fondo de UIImageView también sea claro.

+0

En realidad, no había muchas razones para mantener el UIView, terminé simplemente usando un UIImageView y luego agregué todos los otros elementos como subvistas de eso y funciona muy bien. – RyanJM

+0

@RyanJM Oh sí. A veces me olvido de que, como subvista de UIView, UIImageView puede albergar con gusto subvistas ... –

Cuestiones relacionadas