我使用UIWebView
通過顯示捆綁的HTML文件來顯示「關於」屏幕。我的應用的視圖層次是:UITabBarController
/UIViewController
/UIWebView
。如何在顯示UIWebView時防止初始白色閃爍?
問題是HTML頁面有黑暗的背景,並且第一次點擊標籤時,在Web視圖顯示之前會短暫顯示白色背景。我試圖設置UIWebView
的背景顏色,但這並不能解決問題。我是否加載viewDidLoad
或viewWillAppear
中的內容會出現問題。
我使用UIWebView
通過顯示捆綁的HTML文件來顯示「關於」屏幕。我的應用的視圖層次是:UITabBarController
/UIViewController
/UIWebView
。如何在顯示UIWebView時防止初始白色閃爍?
問題是HTML頁面有黑暗的背景,並且第一次點擊標籤時,在Web視圖顯示之前會短暫顯示白色背景。我試圖設置UIWebView
的背景顏色,但這並不能解決問題。我是否加載viewDidLoad
或viewWillAppear
中的內容會出現問題。
webView.opaque = NO;
webView.backgroundColor = [UIColor clearColor];
非常好,工作。順便說一句,你會知道如何在應用程序啓動時「預加載」內容嗎?我試圖從應用程序委託和標籤欄執行它,但沒有運氣。 – Dogweather 2013-03-27 22:21:23
我找到了解決辦法:發送-view到UIView將導致它預加載正確。 – Dogweather 2013-03-27 23:50:28
謝謝 - 這也適用於'WKWebView' – 2018-01-08 19:41:57
//負載的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];
}
這是一個不錯的解決方案。設置Web視圖背景顏色清除的位置對我來說不起作用。 – 2014-07-18 21:36:08
我想知道爲什麼iOS 8繼續呈現此錯誤。你好蘋果,我在看你! – SpaceDog 2014-09-30 03:29:33
後,我也遇到了同樣的問題,我找到了解決辦法如下。
-(void)viewDidLoad {
[super viewDidLoad];
[_webView setOpaque:NO];
_webView.backgroundColor = [UIColor clearColor];
self.webView.hidden = YES;
}
-(void)webViewDidFinishLoad:(UIWebView *)webView {
//...........................
self.webView.hidden = NO;
}
可以隱藏'UIWebView'直到Webview是沒有加載完成,設置它沒有隱藏在'webViewDidFinishLoading' – nsgulliver 2013-03-27 21:28:40
我想我真的需要做相反:即,立即表現出來,不拖延,使白色背景永遠不可見。 – Dogweather 2013-03-27 21:30:40