Nền UIWebView được đặt thành Clear Color, nhưng nó không trong suốt


140

Tôi đang phát triển ứng dụng iOS 4 bằng iOS SDK phiên bản mới nhất và XCode 4.2.

Tôi có XIB với a UIWebViewvới Alpha = 1.0 , Nền được đặt thành Xóa màuOpaque không được đặt. Trên XIB này, tôi thiết lập một hình ảnh làm nền với mã này:

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

Điều UIWebViewnày đang hiển thị một html tĩnh:

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

Trên trình giả lập iOS 5, nền của nó trong suốt, nhưng trên thiết bị iOS 4 có màu xám.

Có manh mối nào không?


hãy thử đặt UIImageView trên webview của bạn trong trình tạo giao diện và đặt hình ảnh của bạn.
Stas

Cảm ơn câu trả lời của bạn, nhưng chế độ xem web không lấp đầy toàn bộ màn hình.
VansFannel

1
bản sao có thể có của Cách tạo UIWebVIew trong suốt
Vladimir

Câu trả lời:


360

Cũng đặt:

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

3
Điều này chỉ hoạt động với tôi nếu tôi đặt màu nền và độ mờ đục sau khi gọi loadHTMLString. Có vẻ như loadHTMLString đặt lại cả hai giá trị đó.
Justin Anderson

1
Tôi biết câu hỏi dành cho iOS, nhưng nếu dành cho OSX, câu hỏi và câu trả lời này sẽ giải quyết vấn đề và cũng có thể giúp những người có iOS.
Volomike

Giải pháp này vẫn hoạt động trong iOS 12.1, Xcode 10.1 và Swift.
Bhavin_m

15
     /*for ios please set this*/

     [webViewFirst setOpaque:NO];

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

9

Bên cạnh việc đặt nền của webview của bạn thành màu rõ ràng, cũng đảm bảo rằng bạn đặt mờ thành sai.


Cảm ơn câu trả lời của bạn, nhưng không được đặt trên Trình tạo giao diện.
VansFannel

Hãy thử thiết lập nó sau khi gọi [super viewDidLoad: hoạt hình]; .
Elegia

Xin chào, tôi có cùng một vấn đề .. hoạt động trên ios5 nhưng nền màu xám trên ios4. Làm thế nào bạn giải quyết nó?
dùng542584

3
webView.opaque = NO;

webView.backgroundColor = [UIColor clearColor];

3

Bạn có thể thử mã này (tôi biết rằng nó không an toàn, nhưng nó hoạt động ngay cả đối với 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

Đối với mục tiêu

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

Vui lòng đảm bảo đưa mã này vào mã HTML của bạn:

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

hoặc là

 <body style="background:none">

0

Phiên bản Swift mới nhất (theo yêu cầu):

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

Xóa dòng đại biểu nếu không cần thiết

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.