140
votes

I'm developing an iOS 4 application using iOS SDK latest version and XCode 4.2.

I have a XIB with a UIWebView with Alpha = 1.0, Background set to Clear Color and Opaque is not set. On this XIB I setup an image as background with this code:

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

The UIWebView is showing an static html:

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

On iOS 5 simulator, its background is transparent, but on an iOS 4 device is grey.

Any clue?

8
try to just put an UIImageView on your webview in interface builder and set it your image.Stas
Thanks for your answer, but the web view doesn't fill the entire screen.VansFannel
possible duplicate of How to make a transparent UIWebVIewVladimir

8 Answers

363
votes

Also set :

[webView setBackgroundColor:[UIColor clearColor]];
[webView setOpaque:NO];
15
votes
     /*for ios please set this*/

     [webViewFirst setOpaque:NO];

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

Besides setting your webview's background to clear color, also make sure that you set opaque to false.

3
votes
webView.opaque = NO;

webView.backgroundColor = [UIColor clearColor];
3
votes

You can try this code (i know, that it's unsafe, but it works even for ios5):

- (void)makeBodyBackgroundTransparent {
        for (UIView *subview in [webView subviews]) {
            [subview setOpaque:NO];
            [subview setBackgroundColor:[UIColor clearColor]];
        }
        [webView setOpaque:NO];
        [webView setBackgroundColor:[UIColor clearColor]];
}
3
votes
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
votes

For Objective

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

Please make sure to include this into your HTML code:

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

or

 <body style="background:none">
1
votes

Latest Swift Version (as required):

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

Remove delegate line if not required