您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“iOS中如何解決WKWebView白屏問題”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“iOS中如何解決WKWebView白屏問題”這篇文章吧。
前言
隨著WKWebView的推出, 解決了很多UIWebView 的問題。比如加載速度慢,內(nèi)存泄露等問題。WKWebView是在iOS 8 推出,前段時間正好把項目也適配到iOS 8 以上了,終于可以把項目中的UIWebView 替換成WKWebView。
WKWebView的特點:
性能高,穩(wěn)定性好,占用的內(nèi)存比較小,
支持JS交互
支持HTML5 新特性
可以添加進(jìn)度條(然并卵,不好用,還是習(xí)慣第三方的)。
支持內(nèi)建手勢,
據(jù)說高達(dá)60fps的刷新頻率(不卡)
但是發(fā)現(xiàn)在使用的時候還是有很多坑,這其中就有屢見不鮮的白屏問題。經(jīng)過一些調(diào)試、google 發(fā)現(xiàn)不外乎這3個原因。下面話不多說了,來一起看看詳細(xì)的介紹吧。
1. iOS 8.0 - iOS 8.2 偶爾白屏問題
這個是WKWebView 剛推出時的Bug,偶爾會出現(xiàn)白屏,如果想避免這種問題,只能通過版本號判斷,小于8.2的系統(tǒng)使用UIWebView。
2. HTTPS 請求,未實現(xiàn)證書認(rèn)證代理導(dǎo)致頁面不加載的問題
如果是HTTPS 請求,需要在WKWebView 的 WKNavigationDelegate 中的一個代理方法 中實現(xiàn)獲取服務(wù)器認(rèn)證的邏輯,最后返回給服務(wù)端。 這個問題常常出現(xiàn)在客戶端無法獲得安全認(rèn)證的時候(沒有證書,或者是自建證書),比如說https://www.apple.com/cn 是默認(rèn)的蘋果中國的地址,但是 https://www.apple.com.cn 也是可以訪問的(會自動跳轉(zhuǎn)到 https://www.apple.com/cn ) ,只是在Safari 的安全認(rèn)證中通不過,我們需要在代理方法中通過服務(wù)端給的驗證方式創(chuàng)建一個憑證,然后繼續(xù)申請訪問。比如在Safari 瀏覽器中第一次訪問時就會彈出對話框,點擊繼續(xù)后就可以繼續(xù)訪問。
通過實現(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),不刷新的問題
這是有個哥們遇到的問題,分析的很仔細(xì),從發(fā)現(xiàn)問題,到分析WebKit 源碼,最后得知是在頁面滾動后沒有正常的調(diào)用 WKWebView 的 _updateVisibleContentRects 方法刷新需要渲染的內(nèi)容導(dǎo)致。
以上是“iOS中如何解決WKWebView白屏問題”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。