1. 程式人生 > 實用技巧 >對於UIWebView與WKWebview的理解

對於UIWebView與WKWebview的理解

iOS有UIWebview和WKWebview兩種webview。從iOS13開始蘋果將UIWebview列為過期API。2020年4月起App Store將不再接受使用UIWebView的新App上架、2020年12月起將不再接受使用UIWebView的App更新。

在進行5+app開發中,從HBuilderX 2.2.5起,iOS上預設均已經是WKWebview,除非開發者手動在程式碼中指定要用UIWebview,否則實際渲染的頁面都是在WKWebview裡渲染的。不過,雖然實際頁面是WKWebview渲染的,但App底層引擎原始碼裡仍然有UIWebview的可選引用。Appstore的機審會發現二進位制程式碼中包括對UIWebview的引用,從而引發告警。

從HBuilderX 2.6.6起,uiWebview從基礎引擎中移除,變成可選模組(manifest裡選擇),機審也沒有提示了。

現在下面就來講解一下UIwebview以及WKwebview以及他們的區別。

UIwebview

UIWebView用於在App中嵌入網頁內容,通常情況下是html格式的網頁,也支援pdf, word等文件。

控制元件優點

  1. 可跨平臺
      開發一次可以部署iOS、Android等平臺。

  2. 釋出更新快
      在伺服器端釋出,能夠實時更新終端展示,便於快速升級以及緊急修復bug。

  3. 排版佈局能力強
      強大的HTML+CSS讓人膜拜

控制元件缺點

  1. 效能
      Native與HTML5爭論時最喜歡說的一句話就是:“你效能不行”。Web App執行在瀏覽器裡,瀏覽器的開放能力難以支援HTML5與Native對抗。

  2. 資料通訊複雜
      UIWebView與App之間進行資料通訊只能通過javascript或者UIWebViewDelegate來進行,客戶端想傳引數給UIWebView修改網頁或者從網頁中獲取資料都比較複雜。

使用場景

  1. 排版複雜的內容

  2. 需後臺靈活控制的介面

  3. 原網頁

WKWebview

隨著IOS開發的應用,對於網頁嵌入也越來越多了,在IOS 8之前我們使用UIWebView展示詳情頁,自從IOS 8之後就出現了WKWebView,相比UIWebView,WKWebView優化了較多的體驗。

WKWebView優點

WKWebView採用跨程序方案,Nitro JS解析器,高達60fps的重新整理率,理論上效能和Safari比肩,而且對H5也實現了高度支援。

1.WKWebView的記憶體開銷比UIWebView小很多

2.內建手勢

3.支援了更多的HTML5特性

4.有Safari相同的JavaScript引擎

5.提供常用的屬性,如載入網頁進度的estimatedProgress屬性

兩者區別

UIWebview自iOS2就有,WKWebView從iOS8才有,毫無疑問WKWebView將逐步取代笨重的UIWebview。通過官方效能測試可以發現UIWebview佔用過多記憶體,且記憶體峰值更是誇張。WKWebView網頁載入速度也有提升,但是並不像記憶體那樣提升那麼多。

WKWebView是蘋果在WWDC2014釋出會中釋出IOS8的時候公佈WebKit時候使用的新型的H5容器。它與UIWebView相比較,擁有更快的載入速度和效能,更低的記憶體佔用。將UIWebViewDelegate和UIWebView重構成了14個類,3個協議,可以讓開發者進行更加細緻的配置。

但是他有一個最致命的缺陷,就是WKWebView的請求不能被NSURLProtocol截獲。

如上圖分別是UIWebview與WKWebView的流程,WKWebView的流程粒度更加細緻,不但在請求的時候會詢問WKWebView是否請求資料,還會在返回資料之後詢問WKWebView是否載入資料。

更多關於UIwebview與WKwebview的使用方法請訪問教程連結