UITableView 是iOS開發(fā)中非常常用的一個控件,今天來做一些我在使用過程中的分享川尖。
1.UITableView的重用機制
tableView本來就將性能優(yōu)化到很好了,使用重用機制村刨,不會大量創(chuàng)建cell巩趁,這個原理在這里就不用多說宗弯,大家都知道脯燃。
我要說的是,在最近的兩三個月里蒙保,一直都沒用storyboard和xib辕棚,因為來到一家新公司,在這里邓厕,所有的約束都是用代碼寫的逝嚎,還好我說服了大家用masonry,不然那一段段的約束详恼。补君。。昧互。嘔挽铁,天哪伟桅!
當然,有一個大牛的同事叽掘,他寫的約束我真的是服楣铁。比如cell,通過判斷各種參數(shù)就可以通過添加約束搞定不同布局的cell够掠。我真的是望塵莫及民褂,但是茄菊,在Apple官方不斷完善storyboard和xib的時候疯潭,我認為,還是直接拖控件拖約束更有效率一些面殖,所以竖哩,不同樣式的cell,直接做成不同的類就好了脊僚。其實計算并寫各種約束的時間相叁,都夠用故事版寫幾個頁面了。(似乎有點跑題辽幌。增淹。∥谄螅總之虑润,就是一定要用重用,不同布局的cell加酵,就多寫幾個自定義的cell類就好了拳喻。不要浪費時間做約束,不僅自己懵逼猪腕,tableView都懵逼了)
2.高度要給明確的返回
tableView的代理方法中冗澈,是要先走heightForRow 這個方法,才會去給cell布局的陋葡,所以高度一定要提前給一個明確的返回亚亲。在很久以前,剛學習使用tableView的時候腐缤,比較粗心沒有寫這個方法朵栖,整個tableView都不顯示,那次讓我記住一定要給cell返回明確的高度柴梆。
當然陨溅,cell會有動態(tài)的高度,有時候只要約束加的好的話绍在,這個方法可以不寫门扇,能夠正常顯示雹有,但是前提是這個tableView的cell只是有限的幾個,大概一個屏幕就可以顯示完臼寄,否則霸奕,還是乖乖的計算高度返回吧。
3.盡量減少控件吉拳,盡量不要用半透明
繪制控件是需要時間的质帅,所以能用一個控件解決的事不要用多個,半透明的顏色不要用留攒,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 強多了魄揉。
今天想到這幾個注意的點,先寫這么多拭宁,以后繼續(xù)補充