cell中 UIwebView的自適應(yīng)高度和高性能的做法

? ?更新:7.優(yōu)化甸私,全局變量webview將首次計(jì)算的高度緩存起來. ? 隨后cell也可以異步方式渲染出來。 ? ? ? ? ? ? ? ? ?

(適合對(duì)uiwebvieb有基本了解的讀者)


做法:在每一個(gè)tableview的cell里面嵌入uiwebview,即每一個(gè)cell里面有一個(gè)html

難點(diǎn):性能,自適應(yīng)高度

1.

一般的做法是:

*請(qǐng)求數(shù)據(jù)->加載UITableView->加載UIWebView->*重新計(jì)算并調(diào)整UIWebView及其行高琴拧。

注意:

1.webview加載—>刷新高度(刷新當(dāng)前行tableview->reloadRowsAtIndexPaths)-->又重新加載webview蝌借,又重復(fù)刷新高度--》死循環(huán)(可以加載一次webview后拿到的高度跟當(dāng)前刷新加載的高度比較,若相等則不必?zé)o限刷新)吟吝;

2.如果每一行cell高度不一樣的話菱父,就很麻煩了,很耗性能剑逃,而且高度難以控制浙宜。


加載內(nèi)容

//加載網(wǎng)頁或者本地文件

- (void)loadRequest:(NSURLRequest *)request;

//直接加載html內(nèi)容,如果html中的圖片等資源在本地目錄蛹磺,注意將baseURL指向該目錄

- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL;

//功能與上面類似

- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)textEncodingName baseURL:(NSURL *)baseURL;

加載完了內(nèi)容才能執(zhí)行stringByEvaluatingJavaScriptFromString方法粟瞬。

2.

用autolayout控制高度webview的高度:

問題是:uiwebview里面包含一個(gè)UIScrollview,IB要求UIScrollview的contentSize必須在布局時(shí)能夠確定萤捆。

contentSize與UIScrollview的subViews相互依賴才能確定位置

之前看過一篇文章談到解決方法:讓subViews不依賴于contentSize裙品,讓scrollview的contentview 與(scrollview所添加的)View的約束equal width,equal height俗或。(http://natashatherobot.com/ios-autolayout-scrollview/)

但是:uiwebview里面的scrollview是封裝在里面的市怎,在IB上不能以上的方法解決。只能通過去代碼遍歷uiwebview的subviews得到scrollview辛慰,scrollView里面包含著一個(gè)UIWebBrowserView用于渲染網(wǎng)頁內(nèi)容的焰轻,那樣的話只能用代碼寫約束了(~原諒我太懶了~所以沒這樣做~嘻嘻)


3.

我最后比較滿意的做法是:

- (CGFloat)tableView:(UITableView

*)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

NSString*str=[selfgetDataHtmlString:indexPath];

self.htmlHeight=[selfevaluateJSWithHtmlContent:_webView htmlstr:strJSstr:@""];

returnself.htmlHeight;

}


1.在tableviewController里面,當(dāng)渲染一行cell時(shí)昆雀,先在cell的高度方法里用先用一個(gè)全局變量_webView是渲染html辱志,用js把高度計(jì)算出來蝠筑,然后再去渲染cell.

2.我沒有用loadRequest,loadHTMLString的異步方法去加載html,直接使用了同步方法stringByEvaluatingJavaScriptFromString去替換webview默認(rèn)html里面的內(nèi)容揩懒。

3.一個(gè)cell類是有一個(gè)uiwebview的屬性的什乙,當(dāng)cell復(fù)用時(shí),uiwebview也是復(fù)用的已球。

4.如果你想通過一個(gè)本地的html作為模板去渲染html的話臣镣,方便直接在本地加css,js的話智亮,可以在cell里面控制uiwebview的方法loadRequest:方法只執(zhí)行一次忆某。之后每次復(fù)用cell,webview時(shí),就不用loadRequest阔蛉,用stringByEvaluatingJavaScriptFromString去替換webview默認(rèn)html里面的內(nèi)容弃舒。

5.加載5000條數(shù)據(jù)都很流暢,跟平常的tableview差不多状原。

6.還是可以考慮另外一種做法:預(yù)加載的方式聋呢,當(dāng)tableview滑動(dòng)到底部時(shí),先預(yù)加載后面幾條颠区,這樣高度也先出來了 削锰,再去渲染cell.

最后:,我學(xué)習(xí)ios有5個(gè)月嘍~我是第一次寫技術(shù)文章~謝謝閱讀毕莱!歡迎技術(shù)交流(*^__^*) ?-by Alice Ye

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末器贩,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子朋截,更是在濱河造成了極大的恐慌磨澡,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件质和,死亡現(xiàn)場(chǎng)離奇詭異稳摄,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)饲宿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門厦酬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人瘫想,你說我怎么就攤上這事仗阅。” “怎么了国夜?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵减噪,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng)筹裕,這世上最難降的妖魔是什么醋闭? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮朝卒,結(jié)果婚禮上证逻,老公的妹妹穿的比我還像新娘。我一直安慰自己抗斤,他們只是感情好囚企,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瑞眼,像睡著了一般龙宏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上伤疙,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天银酗,我揣著相機(jī)與錄音,去河邊找鬼掩浙。 笑死花吟,一個(gè)胖子當(dāng)著我的面吹牛秸歧,可吹牛的內(nèi)容都是我干的厨姚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼键菱,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼谬墙!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起经备,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤拭抬,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后侵蒙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體造虎,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年纷闺,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了算凿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡犁功,死狀恐怖氓轰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情浸卦,我是刑警寧澤署鸡,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響靴庆,放射性物質(zhì)發(fā)生泄漏时捌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一撒穷、第九天 我趴在偏房一處隱蔽的房頂上張望匣椰。 院中可真熱鬧,春花似錦端礼、人聲如沸禽笑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽佳镜。三九已至,卻和暖如春凡桥,著一層夾襖步出監(jiān)牢的瞬間蟀伸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國(guó)打工缅刽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留啊掏,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓衰猛,卻偏偏與公主長(zhǎng)得像迟蜜,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子啡省,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容