引言
UIWebView 和 WKWebView 的區(qū)別
WKWebView 更快(占用內(nèi)存可能只有 UIWebView 的1/3~1/4)棉胀,沒(méi)有緩存挚冤,更為細(xì)致地拆分了 UIWebViewDelegate 中的方法拌牲。
想要了解更多關(guān)于 WKWebView 的特性的,可以自行百度蜕窿,這里你可以簡(jiǎn)單地把它當(dāng)做是輕量級(jí)的 UIWebView寂玲。
為什么現(xiàn)在是時(shí)候從 UIWebView 遷移到 WKWebView 了:
到目前為止,iOS 9 占有率已達(dá) 58.55%冠摄,iOS 8 占有率達(dá)到了 34.78%糯崎,iOS 7 及更早版本是 6.66%,而剩下的6.66% 應(yīng)該大部分都是對(duì)手機(jī)使用極度不頻繁的人河泳。所以從現(xiàn)在開始沃呢,再開發(fā) App 只兼容 iOS 8 和 iOS 9 兩個(gè)版本就可以了,除非你對(duì)你的產(chǎn)品覆蓋率有非常高的要求拆挥。WKWebView 是 iOS 8 之后才有的 WebKit 中的內(nèi)容薄霜,所以之前我們要同時(shí)兼容 iOS 7 和 iOS 8 的時(shí)候,可以推辭說(shuō) UIWebView 和 WKWebView 一起做太麻煩了纸兔,現(xiàn)在可沒(méi)有理由拒絕新東西了惰瓜。
正文
常用代理方法
在 WKWebView 中,UIWebViewDelegate 與 UIWebView 被重構(gòu)成了14類與3個(gè)協(xié)議汉矿,下面給出一些在 UIWebView 中常用的方法的 WKWebView 版本崎坊。
//準(zhǔn)備加載頁(yè)面
UIWebViewDelegate - webView:shouldStartLoadWithRequest:navigationType
WKNavigationDelegate -webView:didStartProvisionalNavigation:
//已開始加載頁(yè)面,可以在這一步向view中添加一個(gè)過(guò)渡動(dòng)畫
UIWebViewDelegate - webViewDidStartLoad:
WKNavigationDelegate - webView:didCommitNavigation:
//頁(yè)面已全部加載洲拇,可以在這一步把過(guò)渡動(dòng)畫去掉
UIWebViewDelegate - webViewDidFinishLoad:
WKNavigationDelegate - webView:didFinishNavigation:
//加載頁(yè)面失敗
UIWebViewDelegate - webView:didFailLoadWithError:
WKNavigationDelegate - webView:didFailNavigation:withError:
WKNavigationDelegate - webView:didFailProvisionalNavigation:withError:
以上方法分別存在于 UIWebViewDelegate 和 WKNavigationDelegate 中流强。
如果你之前只是用到了以上列出的 UIWebViewDelegate 中的幾個(gè)方法痹届,那么只是簡(jiǎn)單地?fù)Q一個(gè)方法名,讓你的 ViewController 繼承 WKNavigationDelegate 打月,繼續(xù)用就可以了队腐。想要更多內(nèi)容可以自己用 cmd鍵+鼠標(biāo)左擊『WKNavigationDelegate』通過(guò) Xcode 查看。
要注意的是 webview.delegate = self 需要改寫為 webview.navigationDelegate = self奏篙。