Der UIWebView-Hintergrund ist auf Farbe löschen eingestellt, jedoch nicht transparent


140

Ich entwickle eine iOS 4-Anwendung mit der neuesten Version des iOS SDK und XCode 4.2.

Ich habe ein XIB mit einem UIWebViewmit Alpha = 1.0 , Hintergrund auf Clear Color eingestellt und Opaque ist nicht eingestellt. Auf diesem XIB habe ich ein Bild als Hintergrund mit folgendem Code eingerichtet:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"AboutBackground.png"]];
        self.view.backgroundColor = background;
        [background release];
    }
    return self;
}

Das UIWebViewzeigt ein statisches HTML:

<html><head></head><body style=\"margin:0 auto;text-align:center;background-color: transparent; color:white\">...</body></html>

Auf dem iOS 5-Simulator ist der Hintergrund transparent, auf einem iOS 4-Gerät jedoch grau.

Irgendeine Ahnung?


Versuchen Sie einfach, eine UIImageView in Ihre Webansicht im Interface Builder einzufügen und Ihr Image festzulegen.
Stas

Vielen Dank für Ihre Antwort, aber die Webansicht füllt nicht den gesamten Bildschirm aus.
VansFannel

Antworten:


360

Auch eingestellt:

[webView setBackgroundColor:[UIColor clearColor]];
[webView setOpaque:NO];

3
Dies funktioniert nur, wenn ich die Hintergrundfarbe und die Undurchsichtigkeit nach dem Aufruf von loadHTMLString festgelegt habe. Es scheint, als würde loadHTMLString diese beiden Werte zurücksetzen.
Justin Anderson

1
Ich weiß, dass die Frage für iOS war, aber wenn für OSX, löst diese Frage und Antwort das Problem und kann auch denen mit iOS helfen.
Volomike

Diese Lösung funktioniert immer noch in iOS 12.1, Xcode 10.1 und Swift.
Bhavin_m

15
     /*for ios please set this*/

     [webViewFirst setOpaque:NO];

     /*for html please set this*/
     <body style="background:none">

9

Stellen Sie neben der Einstellung des Hintergrunds Ihrer Webansicht auf klare Farben auch sicher, dass Sie opak auf false setzen.


Vielen Dank für Ihre Antwort, aber undurchsichtig ist im Interface Builder nicht eingestellt.
VansFannel

Versuchen Sie es nach dem Aufruf von [super viewDidLoad: animiert] einzustellen. .
Elegia

Hallo, ich habe das gleiche Problem. Funktioniert auf iOS5, aber grauer Hintergrund auf iOS4. Wie haben Sie es gelöst?
user542584

3
webView.opaque = NO;

webView.backgroundColor = [UIColor clearColor];

3

Sie können diesen Code ausprobieren (ich weiß, dass er unsicher ist, aber auch für ios5 funktioniert):

- (void)makeBodyBackgroundTransparent {
        for (UIView *subview in [webView subviews]) {
            [subview setOpaque:NO];
            [subview setBackgroundColor:[UIColor clearColor]];
        }
        [webView setOpaque:NO];
        [webView setBackgroundColor:[UIColor clearColor]];
}


3
NSString *content=@"example clear background color UIWebview";
NSString *style=[NSString stringwithformat:@"<html><head><style>body {background-color:transparent;}</style></head><body>%@</body></html>",content];
[myWebview loadhtmlstring:style baseurl:nil];

1

Für das Ziel

webView.opaque = NO;
webView.backgroundColor = [UIColor clearColor];

Bitte stellen Sie sicher, dass Sie dies in Ihren HTML-Code aufnehmen:

<body style="background-color: transparent;">

oder

 <body style="background:none">

0

Neueste Swift-Version (nach Bedarf):

lazy var webView: UIWebView = {
    let view = UIWebView()
    view.delegate = self
    view.backgroundColor = .clear
    view.isOpaque = false
    return view
}()

Entfernen Sie die Delegatenzeile, falls dies nicht erforderlich ist

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.