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?

VansFannel
fuente
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
1
posible duplicado de Cómo hacer una UIWebVIew transparente
Vladimir

Respuestas:

360

También establecer:

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

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

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

Artem Stepanenko
fuente
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];
usuario5742417
fuente
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">
Amr enojado
fuente
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

RichAppz
fuente