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

首頁 > 系統 > iOS > 正文

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

2019-10-21 18:44:01
字體:
來源:轉載
供稿:網友

前言

隨著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 瀏覽器中第一次訪問時就會彈出對話框,點擊繼續后就可以繼續訪問。

ios,wkwebview,白屏,ios11

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

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 方法刷新需要渲染的內容導致。

總結

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


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 金门县| 临沧市| 太仓市| 修武县| 隆子县| 大理市| 台南市| 嵊州市| 平武县| 武强县| 湖口县| 奉节县| 弥渡县| 长顺县| 林芝县| 安顺市| 宜宾县| 拜泉县| 靖江市| 铁岭市| 包头市| 蒲城县| 福安市| 民丰县| 漳浦县| 山阴县| 宁武县| 青铜峡市| 庆城县| 郓城县| 白朗县| 潞西市| 县级市| 罗源县| 福建省| 正定县| 保康县| 恭城| 灵宝市| 兰州市| 江永县|