從 UIWebView 到 WKWebView

引言

UIWebView 和 WKWebView 的區(qū)別

WKWebView 更快(占用內(nèi)存可能只有 UIWebView 的1/3~1/4),沒有緩存,更為細致地拆分了 UIWebViewDelegate 中的方法。
想要了解更多關(guān)于 WKWebView 的特性的,可以自行百度,這里你可以簡單地把它當(dāng)做是輕量級的 UIWebView。

為什么現(xiàn)在是時候從 UIWebView 遷移到 WKWebView 了:

到目前為止,iOS 9 占有率已達 58.55%,iOS 8 占有率達到了 34.78%,iOS 7 及更早版本是 6.66%,而剩下的6.66% 應(yīng)該大部分都是對手機使用極度不頻繁的人。所以從現(xiàn)在開始,再開發(fā) App 只兼容 iOS 8 和 iOS 9 兩個版本就可以了,除非你對你的產(chǎn)品覆蓋率有非常高的要求。WKWebView 是 iOS 8 之后才有的 WebKit 中的內(nèi)容,所以之前我們要同時兼容 iOS 7 和 iOS 8 的時候,可以推辭說 UIWebView 和 WKWebView 一起做太麻煩了,現(xiàn)在可沒有理由拒絕新東西了。

正文

常用代理方法

在 WKWebView 中,UIWebViewDelegate 與 UIWebView 被重構(gòu)成了14類與3個協(xié)議,下面給出一些在 UIWebView 中常用的方法的 WKWebView 版本。

//準備加載頁面
UIWebViewDelegate - webView:shouldStartLoadWithRequest:navigationType
WKNavigationDelegate -webView:didStartProvisionalNavigation:
//已開始加載頁面,可以在這一步向view中添加一個過渡動畫
UIWebViewDelegate - webViewDidStartLoad:
WKNavigationDelegate - webView:didCommitNavigation:
//頁面已全部加載,可以在這一步把過渡動畫去掉
UIWebViewDelegate - webViewDidFinishLoad:
WKNavigationDelegate - webView:didFinishNavigation:
//加載頁面失敗
UIWebViewDelegate - webView:didFailLoadWithError:
WKNavigationDelegate - webView:didFailNavigation:withError:
WKNavigationDelegate - webView:didFailProvisionalNavigation:withError:

以上方法分別存在于 UIWebViewDelegate 和 WKNavigationDelegate 中。
如果你之前只是用到了以上列出的 UIWebViewDelegate 中的幾個方法,那么只是簡單地換一個方法名,讓你的 ViewController 繼承 WKNavigationDelegate ,繼續(xù)用就可以了。想要更多內(nèi)容可以自己用 cmd鍵+鼠標左擊『WKNavigationDelegate』通過 Xcode 查看。
要注意的是 webview.delegate = self 需要改寫為 webview.navigationDelegate = self。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容