2010-03-22 91 views
10

我想在加載內容之前有一個黑色的UIWebView。在IB中,我嘗試將UIWebView的背景顏色設置爲黑色,並且使其具有透明背景並使其父視圖的背景爲黑色。兩者都不起作用。當我的UIWebView加載它的背景是白色的。我怎樣才能解決這個問題?如何控制UIWebView的顏色(在內容加載之前)?

*我希望這不會歸結爲不必首先加載HTML字符串將背景設置爲黑色可見CSS(加載我的實際網頁內容之前)。

+1

我找到了完美的解決方案! http://stackoverflow.com/a/3316909/456536 – iwill 2012-03-22 03:56:38

回答

11

實際上設置背景顏色不能使網絡視圖全黑。 Web頁面的內容呈現在Web視圖的子視圖中,Web視圖包含許多未公開的子視圖,包括允許滾動內容的UIScrollView,以及包含UIWebDocumentView的UIScrollView,該UIWebDocumentView可以繪製Web內容。它們位於Web視圖的背景之上,因此它們覆蓋背景,您可以看到的是UIWebDocumentView,並且設置背景顏色不能使Web視圖全黑。

我想解決的辦法是,你可能會嘗試在你的web視圖上放置一個黑色視圖,並在調用代理方法(如webViewDidFinishLoad:webViewDidStartLoad:)時隱藏視圖。

+5

較少的內存容易解決方案將隱藏/顯示WebView本身viewwillappear或didstartload/didfinishload(這實際上是我這樣做)。 – alexleutgoeb 2010-12-09 10:40:47

+3

[webView setOpaque:NO]; – Kassem 2014-06-29 06:34:36

25

我這樣做的方式是將UIWebView放在黑色視圖上。然後,我們設置網頁和web視圖清晰。適用於iOS 4.2。

在上海華:

view.backgroundColor = [UIColor blackColor]; 

在web視圖:

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

在Web HTML:

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

webView.opaque = NO; webView.backgroundColor = [UIColor clearColor];爲我工作!謝謝 – Mona 2012-10-15 17:55:51

+0

我可以證實,這仍然在iOS 6.1和iOS的某個更新版本上工作:) – Jonathan 2013-08-27 22:20:54

10

其實,這是非常簡單的:

[self.webView setOpaque:NO]; 
self.webView.backgroundColor = [UIColor purpleColor]; 

這將顯示背景顏色,並且只要webview加載它就會快樂地消失。

0

對於iOS 7,這裏是另一個例子。 「自我」是一個已經被推到導航控制器堆棧一個UIViewController:

- (void) loadView 
{ 
    UIWebView *webView = [[UIWebView alloc] initWithFrame: [[UIScreen mainScreen] bounds]];  // iOS 7 - make the web view the entire display 

// -- http://stackoverflow.com/questions/2491654/how-to-control-the-color-of-a-uiwebview-before-contents-load -- 

    webView.backgroundColor = [[Settings sharedInstance] backgroundColor]; 
    webView.opaque   = NO;            // setting this to NO fixes the background color problem 
    webView.delegate  = self; 

    self.view = webView; 

    NSBundle  *thisBundle = [NSBundle mainBundle]; 
    NSString   *path = [thisBundle pathForResource: @"Instructions" ofType: @"html"]; 
     NSURL *instructionsURL = [[NSURL alloc] initFileURLWithPath: path]; 

    [webView loadRequest: [NSURLRequest requestWithURL: instructionsURL]]; 
} 
0

添加的UIView(我用blackView)與您的自定義背景顏色(我用黑色)在WebView中,然後再顯示它加載WebView並在加載時隱藏。 的WebView必須有透明背景和根視圖必須在自定義顏色(在我的情況黑色)

  • 的背景顏色相同的viewDidLoad中()

  • webViewDidStartLoad( webView:UIWebView) blackView.alpha = 1

  • in webViewDidFinishLoad(webView:UIWebView) blackView.alpha = 0

1

試試這個對我來說工作,

按照以下步驟,

集的UIView和網頁流量不透明= NO和背景顏色爲白色

enter image description here

在加載web視圖之前添加以下代碼行,

_webViewOutlet.backgroundColor = [UIColor colorWithWhite:1 alpha:1]; 

希望如此,這是有人

0

刪除此白色忽悠我只能改變的backgroundColor我的看法的顏色幫助。我的代碼使用紫色來顯示更一般的例子。黑色僅用作UIColor.black

編輯loadView工作不適合我,但viewWillAppear工作得很好

override func viewWillAppear(_ animated: Bool) { 
    ... 
    webView.isOpaque = false 
    webView.backgroundColor = UIColor(red: 41/255, green: 45/255, blue: 91/255, alpha: 1) 
    ... 
} 
相關問題