最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2017年10月26日 09:29:27   作者:dimsky  
最近在工作中遇到了WKWebView白屏的問題,所以這篇文章主要給大家介紹了關于iOS中WKWebView白屏問題的分析與解決方法,文中通過示例代碼介紹的非常詳細,對同樣遇到這個問題的朋友具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。

前言

隨著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)證書認證代理導致頁面不加載的問題

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


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

func webView(webView: WKWebView, didReceiveAuthenticationChallenge challenge: NSURLAuthenticationChallenge, completionHandler: (NSURLSessionAuthChallengeDisposition, NSURLCredential?) -> Void) {
  // 判斷服務器采用的驗證方法
 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. 由于滾動組件嵌套的結構,不刷新的問題

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

總結

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

相關文章

  • iOS開發(fā)存儲應用程序Info.plist知識全面詳解

    iOS開發(fā)存儲應用程序Info.plist知識全面詳解

    這篇文章主要為大家介紹了iOS開發(fā)存儲應用程序Info.plist知識全面詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • iOS擼一個簡單路由Router的實現(xiàn)代碼

    iOS擼一個簡單路由Router的實現(xiàn)代碼

    這篇文章主要介紹了iOS擼一個簡單路由Router的實現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • ios常見加密解密方法(RSA、DES 、AES、MD5)

    ios常見加密解密方法(RSA、DES 、AES、MD5)

    本篇文章主要介紹了ios常見加密解密方法(RSA、DES 、AES、MD5),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • IOS判斷字符串是否有空格實例

    IOS判斷字符串是否有空格實例

    在我們大家日常開發(fā)的時候,經(jīng)常會需要對注冊,登錄,忘記密碼等功能的密碼進行判斷是否包含空格,下面這篇文章給大家分享了自己封裝的一個方法,有需要的可以參考借鑒。
    2016-09-09
  • iOS開發(fā)xconfig和script腳本使用詳解

    iOS開發(fā)xconfig和script腳本使用詳解

    這篇文章主要為大家介紹了iOS開發(fā)xconfig和script腳本使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • iOS開發(fā)Firebase中的常用庫使用及功能詳解

    iOS開發(fā)Firebase中的常用庫使用及功能詳解

    這篇文章主要為大家介紹了iOS開發(fā)Firebase中的常用庫使用及功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • IOS中Weex 加載 .xcassets 中的圖片資源的實例詳解

    IOS中Weex 加載 .xcassets 中的圖片資源的實例詳解

    這篇文章主要介紹了IOS中Weex 加載 .xcassets 中的圖片資源的實例詳解的相關資料,希望通過本文介紹能幫助到大家,實現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-08-08
  • 用iOS模擬器安裝App的方法

    用iOS模擬器安裝App的方法

    下面小編就為大家分享一篇用iOS模擬器安裝App的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • iOS開發(fā)學習 ViewController使用示例詳解

    iOS開發(fā)學習 ViewController使用示例詳解

    這篇文章主要為大家介紹了iOS開發(fā)學習 ViewController使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • iOS實現(xiàn)計算器小功能

    iOS實現(xiàn)計算器小功能

    這篇文章主要介紹了iOS實現(xiàn)計算器小功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01

最新評論

山东| 高阳县| 姜堰市| 正安县| 陇南市| 高安市| 扎囊县| 西昌市| 宜宾市| 石棉县| 班戈县| 马山县| 湖南省| 河北区| 台中县| 花垣县| 和林格尔县| 香河县| 万盛区| 故城县| 永康市| 新丰县| 嘉黎县| 金秀| 辽阳县| 曲阜市| 南漳县| 错那县| 资阳市| 涟源市| 泸溪县| 林口县| 长兴县| 福建省| 锡林浩特市| 右玉县| 阿拉善左旗| 临江市| 沂源县| 乐亭县| 吉木萨尔县|