UIWebView背景设置为“清除颜色”,但它不透明

时间:2011-12-29 11:11:57

标签: iphone objective-c ios cocoa-touch uiwebview

我正在使用iOS SDK最新版本和XCode 4.2开发iOS 4应用程序。

我有一个UIWebView的XIB, Alpha = 1.0 背景设置为清除颜色不透明未设置。在这个XIB上,我使用以下代码将图像设置为背景:

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

UIWebView显示静态html:

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

在iOS 5模拟器上,它的背景是透明的,但在iOS 4设备上是灰色的。

有任何线索吗?

8 个答案:

答案 0 :(得分:355)

同时设置:

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

答案 1 :(得分:15)

     /*for ios please set this*/

     [webViewFirst setOpaque:NO];

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

答案 2 :(得分:8)

除了将webview的背景设置为清晰颜色外,还要确保将opaque设置为false。

答案 3 :(得分:3)

你可以尝试这个代码(我知道,这是不安全的,但它甚至适用于ios5):     

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

答案 4 :(得分:3)

webView.opaque = NO;

webView.backgroundColor = [UIColor clearColor];

答案 5 :(得分: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];

答案 6 :(得分:1)

目标

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

请务必将此信息包含在您的HTML代码中:

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

 <body style="background:none">

答案 7 :(得分:0)

最新的Swift版本(根据需要):

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

如果不需要删除代理行