iOS---WKWebView白屏问题

造成webview白屏的原因
1、内存使用过大而崩溃;
2、h5链接中有中文
3、h5页面使用了一下第三方的组件,组件下载失败导致白屏;

一、内存使用过大而崩溃;

UIWebView 会因为内存使用过大而崩溃,WKWebView 苹果进行了优化,不会 Crash 但会导致白屏,不显示内容。

解决方法是监听到 URL 为 nil 或者接收到 WKNavigationDelegate 的 webViewWebContentProcessDidTerminate 时,reload 页面。

解决方法一:借助 WKNavigtionDelegate
当h5页面即将白屏时,会调用- (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 是否为空
有时白屏不会调用方法一的方法,另一种现象是当webview白屏时,webview.title =nil.我们可以在viewWillAppear方法中判断title是否为nil。进而重新加载webview

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

二、h5链接中有中文

对h5链接的中文进行转码,使用转码后的字符串拼接h5链接

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

三、h5页面使用了一下第三方的组件,组件下载失败导致白屏;

听组长说的,h5页面使用第三方的字体,在内网环境下,因为没有下载到外网的自三方字体,导致白屏。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容