2010-10-30 6 views
13

sto impostando il colore di sfondo del mio UIView (che è all'interno di un UIViewController) come segue:iPhone - background di UIViewColor - utilizzando una png con trasparenza?

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

Ho anche provato scherzi con [myView setOpaque:NO]; ma l'immagine non appare trasparente. Ha uno sfondo nero ad esso. Sono abile a risolvere questo programmaticamente? Altrimenti, come dovremmo impostare uno sfondo trasparente alla nostra vista?

Questa sembra una domanda che avrebbe dovuto essere posta prima, ma non ho trovato risposta.

risposta

32

Quando si utilizza un motivo trasparente, dopo aver impostato la proprietà backgroundColor, è necessario impostare la proprietà opaque su NO su entrambe le viste e il relativo livello. Ecco un esempio:

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

Aha, questa è la risposta corretta. Non stavo impostando la proprietà opaca del livello. Grazie! – chaiwalla

+1

È interessante notare che è necessario impostare la proprietà opa * dopo * si imposta l'immagine di sfondo. Deve essere parte del motore di rendering. –

+0

Grazie Sam, ho avuto lo stesso problema. Inoltre: le ultime due righe di questo snippet di codice fanno la stessa cosa. – titaniumdecoy

-1

Utilizzare questo: myView.backgroundColor = [UIColor clearColor];

Questo lo imposta su uno sfondo trasparente.

+0

Su di esso? Voglio che l'immagine sia lo sfondo. Ho altri elementi dell'interfaccia utente all'interno della vista. – RyanJM

+0

Se si imposta il colore UIView su clearColor, allora sarà trasparente. A seconda di dove sono ordinate le immagini e le altre viste, puoi giocarci. – Istvan

0

Non l'ho mai fatto, ma ecco cosa proverei.

Impostare gli UIView .backgroundColor su [UIColor clearColor]. Quindi metti un UIImageView che contiene il tuo PNG come l'elemento "più basso" nella serie di sottoview di UIView. Assicurati che anche il colore di sfondo di UIImageView sia chiaro.

+0

In realtà, non c'era un gran motivo per mantenere l'UIView, ho finito usando solo UIImageView e poi aggiungendo tutti gli altri elementi come sottoview di quello e funziona davvero bene. – RyanJM

+0

@RyanJM Oh sì. A volte mi dimentico che come sottoview di UIView, UIImageView può tranquillamente contenere subviews ... –