2011-12-29 34 views
133

Tôi đang phát triển ứng dụng iOS 4 sử dụng phiên bản iOS SDK mới nhất và XCode 4.2.Nền UIWebView được đặt thành Màu rõ ràng, nhưng nó không trong suốt

Tôi có một XIB với một UIWebView với Alpha = 1,0, nền thiết lập để rõ ràng MàuOpaque không được thiết lập. Về vấn đề này thiết lập XIB tôi 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; 
} 

Các UIWebView được 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 iOS 5 mô phỏng, nền của nó là minh bạch, nhưng trên iOS 4 thiết bị có màu xám.

Bất kỳ đầu mối nào?

+1

thể trùng lặp của [Làm thế nào để làm cho một UIWebView minh bạch] (http://stackoverflow.com/questions/ 3646930/làm thế nào để thực hiện một minh bạch-uiwebview) – Vladimir

+0

cố gắng chỉ cần đặt một UIImageView trên webview của bạn trong xây dựng giao diện và đặt nó hình ảnh của bạn. – Stas

+0

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

Trả lời

346

Ngoài ra thiết lập:

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

Điều này chỉ hoạt động đối với tôi nếu tôi đặt màu nền và độ mờ sau khi gọi hàm loadHTMLString. Dường như loadHTMLString đặt lại cả hai giá trị đó. –

+1

Tôi biết câu hỏi là dành cho iOS, nhưng nếu cho OSX, [câu hỏi và câu trả lời] này (http://stackoverflow.com/a/34525808/105539) giải quyết được sự cố và cũng có thể giúp những người có iOS. – Volomike

5

Bên cạnh việc đặt nền của chế độ xem web 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.

+0

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

+0

Hãy thử thiết lập sau khi gọi [super viewDidLoad: animated]; . – Elegia

+0

Không, nó không hoạt động. Nó có nền màu xám. – VansFannel

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

+0

Vì vậy, giải pháp này không phù hợp với bạn? –

+1

tính năng này phù hợp với tôi. – user542584

13
 /*for ios please set this*/ 

    [webViewFirst setOpaque:NO]; 

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

Nó làm việc cho tôi. – 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

thực sự đã giúp .. – Mayank

1

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

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

Hãy chắc chắn bao gồm này vào mã HTML của bạn:

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

hoặc

<body style="background:none"> 
Các vấn đề liên quan