實(shí)在吃過太多頁面設(shè)計(jì)的虧,所以總結(jié)一下基于UITableview構(gòu)建UI的一些好處勘究。
UITableview是數(shù)據(jù)驅(qū)動的抒倚,根據(jù)內(nèi)置的機(jī)制做展現(xiàn)躬充。修改dataSource就可以控制界面的展現(xiàn)拴孤。刷新界面時只需要使用
reloadData
和reloadRowsAtIndexPaths
就能完成脾歧。頁面擴(kuò)展能力佳。未來業(yè)務(wù)發(fā)展演熟,需要在頁面最上面最下面增加內(nèi)容鞭执,對之前代碼做少量修改就能做到。
大量實(shí)現(xiàn)下拉刷新功能的開源項(xiàng)目芒粹,如果頁面需要刷新功能兄纺,輕松做到。
UITableview具有強(qiáng)大的表現(xiàn)能力化漆,再復(fù)雜的頁面都可以完成估脆。
UITableview使得交互更加統(tǒng)一,所有的頁面座云,不管內(nèi)容多少疙赠,都可以scroll和bounce,符合iOS的交互習(xí)慣疙教。可以參看iOS自帶的App的交互伞租。
UITableView隱藏著很多高級特性(繼承自UIScrollView)贞谓,比如
automaticallyAdjustsScrollViewInsets
讓內(nèi)容可以滾動到導(dǎo)航欄和tabbar的后面,配合磨砂效果葵诈,視覺效果非常贊裸弦;比如點(diǎn)擊狀態(tài)欄會滾動到頂部;這些特性不需要開發(fā)就與生俱來作喘。iOS 8新增
Self Sizing Cell
采盒,只需要設(shè)置rowHeight為UITableViewAutomaticDimension
就可以實(shí)現(xiàn)cell高度根據(jù)約束
自動調(diào)整(務(wù)必設(shè)置top和bottom與contentView的約束)蜓堕,cell高度計(jì)算和緩存已經(jīng)成為歷史往事。滾動到頁面指定的位置非常方便。并且通過保存UITableview的contentOffset挫以,可以記住頁面滾動的位置喷众,當(dāng)用戶進(jìn)入相同的頁面,滾動到之前的位置。
contentOffset妙用無窮滤蝠。比如點(diǎn)擊UITextField編輯時讓其往上滾動一點(diǎn),避免被升起來的鍵盤遮擋授嘀,只要scroll一下便可做到物咳。有些頁面只需將UITableView的
keyboardDismissMode
設(shè)置成interactive,輕松擁有MessageApp那樣靈動的交互蹄皱。尤其適合寫Hotpatch览闰,因?yàn)閁ITableView從渲染到點(diǎn)擊都有非常標(biāo)準(zhǔn)的接口,通過對這些接口做patch巷折,可以解決各種各樣的問題压鉴。即使是Swift App,因?yàn)閁IKit還是OC寫的盔几,使用JSPatch一點(diǎn)問題都沒有晴弃。