iOS---WKWebView白屏問題

造成webview白屏的原因
1、內(nèi)存使用過大而崩潰;
2、h5鏈接中有中文
3、h5頁面使用了一下第三方的組件,組件下載失敗導(dǎo)致白屏;

一、內(nèi)存使用過大而崩潰;

UIWebView 會因為內(nèi)存使用過大而崩潰,WKWebView 蘋果進(jìn)行了優(yōu)化,不會 Crash 但會導(dǎo)致白屏,不顯示內(nèi)容。

解決方法是監(jiān)聽到 URL 為 nil 或者接收到 WKNavigationDelegate 的 webViewWebContentProcessDidTerminate 時,reload 頁面。

解決方法一:借助 WKNavigtionDelegate
當(dāng)h5頁面即將白屏?xí)r,會調(diào)用- (void)webViewWebContentProcessDidTerminate:(WKWebView *)webView NS_AVAILABLE(10_11, 9_0){
}方法,我們只需在這個方法中重新加載webview即可,此時url不為空。

- (void)webViewWebContentProcessDidTerminate:(WKWebView *)webView NS_AVAILABLE(10_11, 9_0){
[webView reload];
}

解決方法二:檢測 webView.title 是否為空
有時白屏不會調(diào)用方法一的方法,另一種現(xiàn)象是當(dāng)webview白屏?xí)r,webview.title =nil.我們可以在viewWillAppear方法中判斷title是否為nil。進(jìn)而重新加載webview

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    if (self.webView.title == nil) {        
        [self.webView reload];
    }
}

二、h5鏈接中有中文

對h5鏈接的中文進(jìn)行轉(zhuǎn)碼,使用轉(zhuǎn)碼后的字符串拼接h5鏈接

 NSCharacterSet *set = [NSCharacterSet URLQueryAllowedCharacterSet];
 NSString *encodedString = [@"中文字符串" stringByAddingPercentEncodingWithAllowedCharacters:set];

三、h5頁面使用了一下第三方的組件,組件下載失敗導(dǎo)致白屏;

聽組長說的,h5頁面使用第三方的字體,在內(nèi)網(wǎng)環(huán)境下,因為沒有下載到外網(wǎng)的自三方字體,導(dǎo)致白屏。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容