国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS中WKWebView白屏問題的分析與解決

2020-07-26 02:38:49
字體:
來源:轉載
供稿:網友

前言

隨著WKWebView的推出, 解決了很多UIWebView 的問題。比如加載速度慢,內存泄露等問題。WKWebView是在iOS 8 推出,前段時間正好把項目也適配到iOS 8 以上了,終于可以把項目中的UIWebView 替換成WKWebView。

WKWebView的特點:

  • 性能高,穩定性好,占用的內存比較小,
  • 支持JS交互
  • 支持HTML5 新特性
  • 可以添加進度條(然并卵,不好用,還是習慣第三方的)。
  • 支持內建手勢,
  • 據說高達60fps的刷新頻率(不卡)

但是發現在使用的時候還是有很多坑,這其中就有屢見不鮮的白屏問題。經過一些調試、google 發現不外乎這3個原因。下面話不多說了,來一起看看詳細的介紹吧。

1. iOS 8.0 - iOS 8.2 偶爾白屏問題

這個是WKWebView 剛推出時的Bug,偶爾會出現白屏,如果想避免這種問題,只能通過版本號判斷,小于8.2的系統使用UIWebView。

2. HTTPS 請求,未實現證書認證代理導致頁面不加載的問題

如果是HTTPS 請求,需要在WKWebView 的 WKNavigationDelegate 中的一個代理方法 中實現獲取服務器認證的邏輯,最后返回給服務端。 這個問題常常出現在客戶端無法獲得安全認證的時候(沒有證書,或者是自建證書),比如說https://www.apple.com/cn 是默認的蘋果中國的地址,但是 https://www.apple.com.cn 也是可以訪問的(會自動跳轉到 https://www.apple.com/cn ) ,只是在Safari 的安全認證中通不過,我們需要在代理方法中通過服務端給的驗證方式創建一個憑證,然后繼續申請訪問。比如在Safari 瀏覽器中第一次訪問時就會彈出對話框,點擊繼續后就可以繼續訪問。


通過實現以下代理即可解決

func webView(webView: WKWebView, didReceiveAuthenticationChallenge challenge: NSURLAuthenticationChallenge, completionHandler: (NSURLSessionAuthChallengeDisposition, NSURLCredential?) -> Void) {  // 判斷服務器采用的驗證方法 if challenge.protectionSpace.authenticationMethod == NSURLAuthenticationMethodServerTrust {  if challenge.previousFailureCount == 0 {   // 如果沒有錯誤的情況下 創建一個憑證,并使用證書   let credential = NSURLCredential(forTrust: challenge.protectionSpace.serverTrust!)   completionHandler(.UseCredential, credential)  } else {   // 驗證失敗,取消本次驗證   completionHandler(.CancelAuthenticationChallenge, nil)  } } else {  completionHandler(.CancelAuthenticationChallenge, nil) }}

3. 由于滾動組件嵌套的結構,不刷新的問題

這是有個哥們遇到的問題,分析的很仔細,從發現問題,到分析WebKit 源碼,最后得知是在頁面滾動后沒有正常的調用 WKWebView 的 _updateVisibleContentRects 方法刷新需要渲染的內容導致。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 曲松县| 八宿县| 巨野县| 新河县| 肇东市| 溧阳市| 平山县| 司法| 团风县| 平陆县| 锡林浩特市| 嘉禾县| 卓资县| 沅陵县| 如东县| 东乡族自治县| 绥江县| 翁源县| 奉贤区| 延川县| 正阳县| 大港区| 渑池县| 米林县| 依安县| 安阳县| 浦城县| 夏邑县| 永仁县| 新竹市| 临洮县| 呼图壁县| 闵行区| 福建省| 佳木斯市| 九龙县| 兴国县| 兴仁县| 历史| 佛学| 佛学|