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?

VansFannel
quelle
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
1
mögliches Duplikat von Wie erstelle ich eine transparente UIWebVIew
Vladimir

Antworten:

360

Auch eingestellt:

[webView setBackgroundColor:[UIColor clearColor]];
[webView setOpaque:NO];
Maulik
quelle
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">
Dheerendra
quelle
9

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

Elegia
quelle
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];
Avinash651
quelle
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]];
}

Artem Stepanenko
quelle
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];
user5742417
quelle
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">
Amr wütend
quelle
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

RichAppz
quelle