El fondo UIWebView está configurado en Color claro, pero no es transparente


140

Estoy desarrollando una aplicación para iOS 4 con la última versión del SDK de iOS y XCode 4.2.

Tengo un XI ter con un UIWebViewcon alfa = 1.0 , Antecedentes conjunto de color claro y opaco no está establecido. En este XIB configuré una imagen como fondo con este código:

- (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;
}

El UIWebViewestá mostrando un html estático:

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

En el simulador de iOS 5, su fondo es transparente, pero en un dispositivo iOS 4 es gris.

¿Cualquier pista?


intente simplemente colocar un UIImageView en su vista web en el generador de interfaces y configure su imagen.
Fecha

Gracias por su respuesta, pero la vista web no ocupa toda la pantalla.
VansFannel

Respuestas:


360

También establecer:

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

3
Esto solo funciona para mí si configuro el color de fondo y la opacidad después de llamar a loadHTMLString. Parece que loadHTMLString restablece ambos valores.
Justin Anderson

1
Sé que la pregunta era para iOS, pero si es para OSX, esta pregunta y respuesta resuelven el problema y también pueden ayudar a las personas con iOS.
Volomike

Esta solución aún funciona en iOS 12.1, Xcode 10.1 y Swift.
Bhavin_m

15
     /*for ios please set this*/

     [webViewFirst setOpaque:NO];

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

9

Además de establecer el fondo de su vista web en color claro, también asegúrese de establecer opaco en falso.


Gracias por su respuesta, pero opaco no está configurado en Interface Builder.
VansFannel

Intente configurarlo después de llamar a [super viewDidLoad: animated]; .
Elegia

Hola, tengo el mismo problema ... funciona en ios5 pero fondo gris en ios4. ¿Cómo lo resolviste?
user542584

3
webView.opaque = NO;

webView.backgroundColor = [UIColor clearColor];

3

Puede probar este código (lo sé, que no es seguro, pero funciona incluso para ios5):

- (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

Para el objetivo

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

Asegúrese de incluir esto en su código HTML:

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

o

 <body style="background:none">

0

La última versión de Swift (según sea necesario):

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

Eliminar la línea de delegado si no es necesario

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.