UITableView的分享

UITableView 是iOS開發(fā)中非常常用的一個(gè)控件,今天來做一些我在使用過程中的分享。
1.UITableView的重用機(jī)制
tableView本來就將性能優(yōu)化到很好了,使用重用機(jī)制,不會(huì)大量創(chuàng)建cell,這個(gè)原理在這里就不用多說,大家都知道。
我要說的是,在最近的兩三個(gè)月里,一直都沒用storyboard和xib,因?yàn)閬淼揭患倚鹿?,在這里,所有的約束都是用代碼寫的,還好我說服了大家用masonry,不然那一段段的約束。。。。嘔,天哪!
當(dāng)然,有一個(gè)大牛的同事,他寫的約束我真的是服。比如cell,通過判斷各種參數(shù)就可以通過添加約束搞定不同布局的cell。我真的是望塵莫及,但是,在Apple官方不斷完善storyboard和xib的時(shí)候,我認(rèn)為,還是直接拖控件拖約束更有效率一些,所以,不同樣式的cell,直接做成不同的類就好了。其實(shí)計(jì)算并寫各種約束的時(shí)間,都夠用故事版寫幾個(gè)頁面了。(似乎有點(diǎn)跑題。。??傊褪且欢ㄒ弥赜?,不同布局的cell,就多寫幾個(gè)自定義的cell類就好了。不要浪費(fèi)時(shí)間做約束,不僅自己懵逼,tableView都懵逼了)
2.高度要給明確的返回
tableView的代理方法中,是要先走h(yuǎn)eightForRow 這個(gè)方法,才會(huì)去給cell布局的,所以高度一定要提前給一個(gè)明確的返回。在很久以前,剛學(xué)習(xí)使用tableView的時(shí)候,比較粗心沒有寫這個(gè)方法,整個(gè)tableView都不顯示,那次讓我記住一定要給cell返回明確的高度。
當(dāng)然,cell會(huì)有動(dòng)態(tài)的高度,有時(shí)候只要約束加的好的話,這個(gè)方法可以不寫,能夠正常顯示,但是前提是這個(gè)tableView的cell只是有限的幾個(gè),大概一個(gè)屏幕就可以顯示完,否則,還是乖乖的計(jì)算高度返回吧。
3.盡量減少控件,盡量不要用半透明
繪制控件是需要時(shí)間的,所以能用一個(gè)控件解決的事不要用多個(gè),半透明的顏色不要用,clearColor這樣的顏色就盡量別用了。
4.不要總是傻傻的reload data

- (void)insertSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation;
- (void)deleteSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation;
- (void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation 
- (void)moveSection:(NSInteger)section toSection:(NSInteger)newSection 

- (void)insertRowsAtIndexPaths:(NSArray<NSIndexPath *> *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;
- (void)deleteRowsAtIndexPaths:(NSArray<NSIndexPath *> *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;
- (void)reloadRowsAtIndexPaths:(NSArray<NSIndexPath *> *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

看這些方法,好好用,比直接無腦的reload data 強(qiáng)多了。

今天想到這幾個(gè)注意的點(diǎn),先寫這么多,以后繼續(xù)補(bǔ)充

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

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

  • 我們在上一篇《通過代碼自定義不等高cell》中學(xué)習(xí)了tableView的相關(guān)知識(shí),本文將在上文的基礎(chǔ)上,利用sto...
    啊世ka閱讀 1,657評論 2 7
  • 概述在iOS開發(fā)中UITableView可以說是使用最廣泛的控件,我們平時(shí)使用的軟件中到處都可以看到它的影子,類似...
    liudhkk閱讀 9,300評論 3 38
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,410評論 4 61
  • 1.類擴(kuò)展和分類的區(qū)別 類擴(kuò)展:沒有名字可以為某個(gè)類增加額外的屬性、成員變量和方法 分類:有名字只能擴(kuò)充方法,不能...
    彼岸的黑色曼陀羅閱讀 669評論 0 1
  • 我們家的小院里有兩棵樹,套用魯迅先生的話:一棵是柿樹,另一棵也是柿樹。柿樹是母親從江蘇豐縣的娘家背來的。我們詫...
    漠漠無語閱讀 943評論 2 4

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