真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

iOS中如何解決WKWebView白屏問題

這篇文章主要為大家展示了“iOS中如何解決WKWebView白屏問題”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習一下“iOS中如何解決WKWebView白屏問題”這篇文章吧。

創(chuàng)新互聯(lián)總部坐落于成都市區(qū),致力網(wǎng)站建設(shè)服務(wù)有成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷策劃、網(wǎng)頁設(shè)計、網(wǎng)站維護、公眾號搭建、微信小程序、軟件開發(fā)等為企業(yè)提供一整套的信息化建設(shè)解決方案。創(chuàng)造真正意義上的網(wǎng)站建設(shè),為互聯(lián)網(wǎng)品牌在互動行銷領(lǐng)域創(chuàng)造價值而不懈努力!

前言

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

WKWebView的特點:

  • 性能高,穩(wěn)定性好,占用的內(nèi)存比較小,

  • 支持JS交互

  • 支持HTML5 新特性

  • 可以添加進度條(然并卵,不好用,還是習慣第三方的)。

  • 支持內(nèi)建手勢,

  • 據(jù)說高達60fps的刷新頻率(不卡)

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

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

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

2. HTTPS 請求,未實現(xiàn)證書認證代理導(dǎo)致頁面不加載的問題

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

iOS中如何解決WKWebView白屏問題

通過實現(xiàn)以下代理即可解決

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

3. 由于滾動組件嵌套的結(jié)構(gòu),不刷新的問題

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

以上是“iOS中如何解決WKWebView白屏問題”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


標題名稱:iOS中如何解決WKWebView白屏問題
鏈接地址:http://weahome.cn/article/pihsod.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部