2011-12-29 23 views
133

Sto sviluppando un'applicazione iOS 4 che utilizza l'ultima versione di iOS SDK e XCode 4.2.Lo sfondo di UIWebView è impostato su Cancella colore, ma non è trasparente

Ho un XIB con un UIWebView con Alpha = 1.0, Sfondo insieme a Clear Color e opaco non è impostato. In questa configurazione XIB ho un'immagine come sfondo con questo codice:

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

Il UIWebView mostra un html statico:

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

su IOS 5 simulatore, lo sfondo è trasparente, ma su un IOS 4 il dispositivo è grigio.

Qualsiasi indizio?

+1

possibile duplicato di [Come fare un'UIWebView trasparente] (http://stackoverflow.com/questions/ 3646930/how-to-make-a-transparent-uiwebview) – Vladimir

+0

prova a mettere una UIImageView sulla tua webview in interface builder e impostala come immagine. – Stas

+0

Grazie per la risposta, ma la visualizzazione Web non riempie l'intero schermo. – VansFannel

risposta

346

impostare anche:

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

Questo funziona solo per me se imposto il colore di sfondo e l'opacità dopo aver chiamato loadHTMLString. Sembra che loadHTMLString ripristini entrambi questi valori. –

+1

So che la domanda era per iOS, ma se per OSX, questa [domanda e risposta] (http://stackoverflow.com/a/34525808/105539) risolve il problema e potrebbe anche aiutare quelli con iOS. – Volomike

5

Oltre a impostare lo sfondo della tua webview per cancellare il colore, assicurati anche di impostare opaque su false.

+0

Grazie per la risposta, ma opaque non è impostato su Interface Builder. – VansFannel

+0

Prova a impostarlo dopo aver chiamato [super viewDidLoad: animato]; . – Elegia

+0

No, non funziona. Ha il suo sfondo grigio. – VansFannel

3

Si può provare questo codice (lo so, che è pericoloso, ma funziona anche per iOS5):

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

+0

Quindi questa soluzione non funziona per te? –

+1

questo funziona per me grazie. – user542584

13
 /*for ios please set this*/ 

    [webViewFirst setOpaque:NO]; 

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

Funziona per me. – san

3
webView.opaque = NO; 

webView.backgroundColor = [UIColor clearColor]; 
3
NSString *[email protected]"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]; 
+0

davvero aiutato .. – Mayank

1

Per l'obiettivo

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

Assicurati di includere questo nel codice HTML:

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

o

<body style="background:none"> 
Problemi correlati