2010-10-30 8 views
13

Ich gründe die Hintergrundfarbe meiner UIView (die innerhalb eines UIViewController ist) wie folgt:iPhone - UIViews backgroundColor - Verwenden eines PNG mit Transparenz?

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

habe ich sogar mit [myView setOpaque:NO]; versucht Messing, aber das Bild nicht transparent erscheint. Es hat einen schwarzen Hintergrund. Kann ich das programmatisch beheben? Wie sollen wir sonst unseren Blick transparent machen?

Dies scheint wie eine Frage, die zuvor hätte gestellt werden sollen, aber ich konnte keine Antwort finden.

Antwort

32

Wenn Sie ein transparentes Muster verwenden, müssen Sie nach dem Festlegen der Eigenschaft backgroundColor die opaque-Eigenschaft in der Ansicht und in der Ebene auf NO festlegen. Hier ist ein Beispiel:

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, das ist die richtige Antwort. Ich habe die undurchsichtige Eigenschaft des Layers nicht festgelegt. Vielen Dank! – chaiwalla

+1

Interessanterweise müssen Sie die undurchsichtige Eigenschaft festlegen * nachdem * Sie das Hintergrundbild festgelegt haben. Muss Teil der Rendering-Engine sein. –

+0

Danke Sam, ich hatte das gleiche Problem. Außerdem: Die letzten beiden Zeilen dieses Code-Snippets machen dasselbe. – titaniumdecoy

-1

Verwenden Sie dies: myView.backgroundColor = [UIColor clearColor];

Dies wird es auf einen transparenten Hintergrund setzen.

+0

Darauf? Ich möchte, dass das Bild der Hintergrund ist. Ich habe andere UI-Elemente in der Ansicht. – RyanJM

+0

Wenn Sie die UIView-Farbe auf clearColor setzen, ist sie transparent. Abhängig davon, wo die Bilder und andere Ansichten angeordnet sind, können Sie mit ihnen herumspielen. – Istvan

0

Ich habe das noch nie gemacht, aber hier ist, was ich versuchen würde.

Setzen Sie die UIView .backgroundColor auf [UIColor clearColor]. Fügen Sie dann ein UIImageView mit Ihrem PNG als "niedrigsten" Eintrag in den UIView-Stapel von Unteransichten ein. Stellen Sie sicher, dass die Hintergrundfarbe des UIImageView ebenfalls klar ist.

+0

Eigentlich gab es keinen Grund, die UIView beizubehalten, ich benutzte einfach eine UIImageView und fügte dann alle anderen Elemente als Subviews hinzu und das funktioniert wirklich gut. – RyanJM

+0

@RyanJM Oh ja. Ich vergesse manchmal, dass UIImageView als Unteransicht von UIView glücklich Subviews halten kann ... –

Verwandte Themen