2010-11-17 15 views
17

me tiene preparada una imagen con transparencia, así:Cómo preservar la transparencia de la imagen cuando se utiliza colorWithPatternImage:

alt text

Con dos UIViews, puedo configurar los colores de fondo como tan:

self.view.backgroundColor = [UIColor groupTableViewBackgroundColor]; 
self.dashedView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"red_square.png"]]; 

Espero que el cuadrado rojo se repita en UIView con la transparencia preservada, pero se ha rellenado con un color sólido como este:

alt text

No entiendo por qué. ¿Hay una manera simple de dibujar una imagen embaldosada con transparencia? ¿O necesito ver el dibujo de patrones de gráficos básicos?

Respuesta

25

Las imágenes de patrones deben mantener la transparencia bien.

Trate [self.dashedView setOpaque:NO]

+0

Perfecto, gracias. Anteriormente probé esto a través de Interface Builder, y eso no parece funcionar. Sin embargo, establecerlo programáticamente sí lo hace. – msmithstubbs

+0

Hay algunos problemas con esas opciones a través de IB, me he encontrado con eso varias veces. Creo que es un problema de orden de inicialización potencialmente. –

+0

Para la posteridad, me pareció necesario establecer la capa como no opaca, por ejemplo: [self.dashedView.layer setOpaque: NO]. Ver: http://stackoverflow.com/questions/4059487/iphone-uiviews-backgroundcolor-using-a-png-with-transparency – tba

3

Yar, gracias por los comentarios.

Descubrí que esto solo ocurre en iOS 4.3.x pero no en iOS 5.0.x. Así que en 4.3.x tuve que hacer lo que Yar id y establecer opaco en NO, luego establecer la imagen de fondo, luego establecer en SÍ.

UIButton* cancelButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
cancelButton.opaque = YES; // fix for strange issue in 4.x, need to set YES, set bg color image, then set back to NO 
cancelButton.backgroundColor = [UIColor colorWithPatternImage: cancelImage]; 
cancelButton.opaque = NO; 
5

todo lo que tiene que hacer es establecer opaco a NO después de configurar el colorWithPatternImage.

self.dashedView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"red_square.png"]]; 
self.dashedView.opaque = NO; 
+1

De hecho, lo importante para 4.3 es configurar el Opaco después de establecer el color de fondo (o la imagen en el caso de un UIImageView). –

Cuestiones relacionadas