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


140

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

我有一个一XIB UIWebView阿尔法= 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设备上是灰色的。

有什么线索吗?


尝试仅将UIImageView放在界面生成器中的Webview上并将其设置为图像。
Stas,

感谢您的回答,但网络视图无法覆盖整个屏幕。
VansFannel 2011年

Answers:


360

还设置了:

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

3
仅当我在调用loadHTMLString之后设置背景颜色和不透明度时,这才对我有用。看来loadHTMLString重置了这两个值。
贾斯汀·安德森

1
我知道问题是针对iOS的,但是如果是OSX,此问题和答案可以解决此问题,也可能对使用iOS的人有所帮助。
Volomike 2015年

此解决方案仍可在iOS 12.1,Xcode 10.1和Swift中使用。
Bhavin_m

15
     /*for ios please set this*/

     [webViewFirst setOpaque:NO];

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

9

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


感谢您的回答,但在Interface Builder上未设置不透明。
VansFannel 2011年

尝试在调用[super viewDidLoad:animated]之后进行设置;。
Elegia

嗨,我有同样的问题..在ios5上工作,但在ios4上为灰色背景。您是如何解决的?
user542584 2012年


3

您可以尝试以下代码(我知道这是不安全的,但即使在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

为了目标

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

请确保将其包含在您的HTML代码中:

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

要么

 <body style="background:none">

0

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

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

如果不需要,请删除代表行

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.