2013-03-27 57 views
18

我使用UIWebView通過顯示捆綁的HTML文件來顯示「關於」屏幕。我的應用的視圖層次是:UITabBarController/UIViewController/UIWebView如何在顯示UIWebView時防止初始白色閃爍?

問題是HTML頁面有黑暗的背景,並且第一次點擊標籤時,在Web視圖顯示之前會短暫顯示白色背景。我試圖設置UIWebView的背景顏色,但這並不能解決問題。我是否加載viewDidLoadviewWillAppear中的內容會出現問題。

+0

可以隱藏'UIWebView'直到Webview是沒有加載完成,設置它沒有隱藏在'webViewDidFinishLoading' – nsgulliver 2013-03-27 21:28:40

+0

我想我真的需要做相反:即,立即表現出來,不拖延,使白色背景永遠不可見。 – Dogweather 2013-03-27 21:30:40

回答

54
webView.opaque = NO; 
webView.backgroundColor = [UIColor clearColor]; 
+0

非常好,工作。順便說一句,你會知道如何在應用程序啓動時「預加載」內容嗎?我試圖從應用程序委託和標籤欄執行它,但沒有運氣。 – Dogweather 2013-03-27 22:21:23

+0

我找到了解決辦法:發送-view到UIView將導致它預加載正確。 – Dogweather 2013-03-27 23:50:28

+1

謝謝 - 這也適用於'WKWebView' – 2018-01-08 19:41:57

6

//負載的index.html

NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"www"]]; 
self.webview.delegate = self; 

self.webview.alpha = 0; // flicker fix 

[self.webview loadRequest:[NSURLRequest requestWithURL:url]]; 

添加這個委託加載

// flicker fix 

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    [UIView beginAnimations:nil context:nil]; 

    [UIView setAnimationDuration:0.30]; 

    self.webview.alpha = 1; 

    [UIView commitAnimations]; 

} 
+0

這是一個不錯的解決方案。設置Web視圖背景顏色清除的位置對我來說不起作用。 – 2014-07-18 21:36:08

+1

我想知道爲什麼iOS 8繼續呈現此錯誤。你好蘋果,我在看你! – SpaceDog 2014-09-30 03:29:33

1

後,我也遇到了同樣的問題,我找到了解決辦法如下。

-(void)viewDidLoad { 
    [super viewDidLoad]; 

    [_webView setOpaque:NO]; 
    _webView.backgroundColor = [UIColor clearColor]; 
    self.webView.hidden = YES; 
} 

-(void)webViewDidFinishLoad:(UIWebView *)webView { 

//........................... 

self.webView.hidden = NO; 
}