基于QQ郵箱羊壹,淺談UIWebView與WKWebView的區(qū)別

淺談UIWebView與WKWebView

1.什么是WebView?WebView是一個(gè)基于webkit引擎、展現(xiàn)web頁面的內(nèi)嵌瀏覽器控件宵呛,我們可以用它來瀏覽網(wǎng)頁、打開文檔等夕凝;

在iOS中主要有兩種WebView:UIWebView和WKWebView宝穗。2008年首次發(fā)布ios2,UIWebView誕生, 2014年發(fā)布ios8,WKWebView是在iOS8開始使用码秉,WKWebView和UIWebView的本質(zhì)是一樣的逮矛,但WKWebView在UIWebView的基礎(chǔ)之上做了優(yōu)化,可以理解為WKWebView是UIWebView的升級(jí)版转砖。

UIWebView對(duì)內(nèi)存消耗大须鼎,流量消耗大,無法調(diào)用系統(tǒng)文件府蔗,硬件資源等晋控。WKWebView內(nèi)存占用是UIWebView的1/4~1/3 ,頁面渲染效率高姓赤。

2.WebView加載方式有兩種糖荒,一種通過輸入U(xiǎn)RL或本地文件路徑加載內(nèi)容,一種通過一段HTML原代碼賦給UIWebView來加載(若想在HTML上加js模捂、css需要另外寫代碼)捶朵。

3.在QQmail業(yè)務(wù)中許多地方分別使用到了UIWebView和WKWebView。

在2011年狂男,QQ郵箱ios端采用UIWebView技術(shù)開發(fā)讀寫信的郵件內(nèi)容部分综看,郵件內(nèi)容的本質(zhì)是一段html,讀信時(shí)郵件內(nèi)容的加載方式是打開下載到本地?cái)?shù)據(jù)庫的html,寫信則是加載本地的html岖食。記事本的內(nèi)容預(yù)覽及編輯同樣使用UIWebView來加載html红碑。

webview內(nèi)容
webview內(nèi)容

郵件內(nèi)容的預(yù)覽及編輯使用UIWebView在當(dāng)時(shí)已是較好的選擇,過了兩三年WKWebView誕生泡垃,此時(shí)讀寫郵件內(nèi)容已經(jīng)相對(duì)穩(wěn)定和成熟析珊,涉及的細(xì)節(jié)非常復(fù)雜,修改成WKWebView改動(dòng)大蔑穴,所需成本高忠寻,因此讀寫郵件內(nèi)容就一直保留了UIWebView。

郵件的附件預(yù)覽也是使用webview技術(shù)實(shí)現(xiàn)存和,word文檔奕剃、excel文檔的預(yù)覽是優(yōu)先使用WKWebView技術(shù)衷旅,txt及html格式的文件仍是使用UIWebView,txt與html保留使用UIWebView,是因?yàn)檫@兩種格式的文件使用WKWebView時(shí)與使用UIWebView纵朋,編碼格式更容易出現(xiàn)亂碼柿顶。

至于讀寫信沒有將整個(gè)界面直接做成WebView形式,是因?yàn)轭^部的輸入框不好用UIWebView做效果操软,權(quán)衡之后選擇了只將郵件內(nèi)容部分做成WebView嘁锯。下面為 UIWebView調(diào)用本地html文件例子(不是實(shí)際使用的業(yè)務(wù)代碼,只是模板):

  • (void)simpleExampleTest {

<pre style="margin-top:7.5pt;margin-right:0cm;margin-bottom:7.5pt;margin-left:
0cm;line-height:21.75pt;background:white"> //1.創(chuàng)建文件路徑</pre>

NSString *filePath = [[NSBundle mainBundle]pathForResource:@"readmail" ofType:@"html"];

// 2.設(shè)置html
NSString *htmlString = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil]

//3. 加載html
[myWebView loadHTMLString:htmlString baseURL:[NSURL URLWithString:filePath]];

}

讀信的郵件內(nèi)容中打開url鏈接的方式是兩年前改做WKWebView,應(yīng)用中的讀書功能同樣用WKWebView調(diào)用url的方式聂薪,選擇WKWebView是因?yàn)樗?a href="http://www.reibang.com/p/7aba76d871a6" target="_blank">頁面渲染效率高猪钮,打開頁面更快,用戶體驗(yàn)更好胆建。下面為WKWebView 調(diào)用URL的例子(不是實(shí)際使用的業(yè)務(wù)代碼烤低,只是模板):

//導(dǎo)入WebKit

import <WebKit/WebKit.h>

  • (void)simpleExampleTest {

// 1.創(chuàng)建webview,并設(shè)置大小笆载,"20"為狀態(tài)欄高度

WKWebView *webView = [[WKWebView alloc] initWithFrame:CGRectMake(0, 20, self.view.frame.size.width, self.view.frame.size.height - 20)];

// 2.創(chuàng)建請(qǐng)求

NSMutableURLRequest *request =[NSMutableURLRequest requestWithURL:[NSURL URLWithString:@" https://mail.qq.com "]];

// 3.加載網(wǎng)頁

[webView loadRequest:request];

// 4.最后將webView添加到界面

[self.view addSubview:webView];

}

4.在線文檔以前是使用WKWebView扑馁,現(xiàn)修改為是由UIWebView調(diào)用url的形式實(shí)現(xiàn), UIWebView 跟 WKWebView都可以支持js api的,js api是用來ios原生跟H5做交互的 之所以要換成WKWebView 的話 是 為了做在線文檔的離線包機(jī)制凉驻、離線預(yù)覽跟離線編輯功能腻要,要支持這些功能必須要代理截獲webView的http請(qǐng)求,UIWebView 跟 WKWebView都可以截獲代理它發(fā)出的http請(qǐng)求涝登,但是使用WKWebView來截獲代理請(qǐng)求的話雄家,會(huì)影響不那些不需要代理的請(qǐng)求,會(huì)使那些不代理的http請(qǐng)求丟失掉頭部或請(qǐng)求body等信息

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末胀滚,一起剝皮案震驚了整個(gè)濱河市趟济,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌咽笼,老刑警劉巖顷编,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異剑刑,居然都是意外死亡媳纬,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門施掏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钮惠,“玉大人,你說我怎么就攤上這事七芭∷赝欤” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵抖苦,是天一觀的道長毁菱。 經(jīng)常有香客問我米死,道長锌历,這世上最難降的妖魔是什么囤踩? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任突诬,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘晶通。我一直安慰自己,他們只是感情好洲胖,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布竣况。 她就那樣靜靜地躺著,像睡著了一般扇丛。 火紅的嫁衣襯著肌膚如雪术吗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天帆精,我揣著相機(jī)與錄音较屿,去河邊找鬼。 笑死卓练,一個(gè)胖子當(dāng)著我的面吹牛隘蝎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播襟企,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼嘱么,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了顽悼?” 一聲冷哼從身側(cè)響起曼振,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蔚龙,沒想到半個(gè)月后拴测,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡府蛇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年集索,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片汇跨。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡务荆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出穷遂,到底是詐尸還是另有隱情函匕,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布蚪黑,位于F島的核電站盅惜,受9級(jí)特大地震影響中剩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜抒寂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一结啼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧屈芜,春花似錦郊愧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至躬翁,卻和暖如春焦蘑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背盒发。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來泰國打工例嘱, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人迹辐。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓蝶防,卻偏偏與公主長得像,于是被迫代替她去往敵國和親明吩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子间学,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360