本文意在介紹UITableView的使用技巧,持續更新。。。
一、先來個小總結:
目前能力 -- UITableViewController如何寫。。。
1、添加一個存放數據的datas的集合(重寫get方法,使用懶加載)
2、實現普通的方式(將數據轉成模型),實現各種代理方法,展現出數據來
3、創建cell
a.使用原來cell;
提供創建cell的類方法,
同時提供一個item模型屬性,
重寫setItem方法,在set方法中設置數據
b.自定義cell,控件固定使用xib(比如團購cell)使用xib創建cell
如果使用xib,需要注意xib父類和ID,需要連線提供控件屬性
c.自定義cell,控件不固定(比如微博)
第一步 新建cell,重寫initWithStyle:reuseIdentifier:
第二步 創建Status 和 StatusFrame 模型
Status中的屬性和cell中的控件相對應
StatusFrame中裝各個控件的 frame 和 cellHeight
第三步 重寫setStatus 和 setStatusFrame 方法
重寫setStatus,計算各控件 frame 和 cellHeight
重寫setStatusFrame方法,settingData 和 settingFrame
第四步 獲取Status數據,寫數據源和代理方法
ps:cell初始化的時候,初始化所有子控件
對於不一定顯示的控件,我們在settingData的時候根據Status中有無此數據來設置該控件是否顯示
將其餘步驟都完成之後,在計算frame這一步我們可以一個個來計算,減少出錯率!
獲取到Status數據時,我們可以先NSLog看一看,在轉模型,裝到Frame中
整個WBTableViewController相當於:我們將33個雙色球放到了大箱子中,用到第一個就取出第一個,用到第二個就取第二個。提高了性能,手機界面不會出現卡頓現象
好吧,初學者能力至此。。望各位大神補充。。。
二、CC上的一個問答:
怎樣把TableView做得像微信朋友圈、QQ動態那樣流暢?
本人在做企業應用,裏面有同事圈(類似微信朋友圈),每一個Cell包含不同長度的文字和不同數量的圖片,我的做法是在創建Cell的時候把所有子View移除,再創建新的,然後添加文字並異步加載圖片,在獲取Cell高度的代理函數裏面先根據indexPath獲取Cell,然後再計算返回Cell.frame.size.height。基本功能也算實現了,就是滑動起來卡,在iPhone4S上還略有抖動。有沒有大神會把TableView優化到不卡,求思路?
看看各位神友的答案!
如果你想要如絲般順滑的效果,那麼:
1、每次都看一下有沒有能重用的 cell,而不是永遠重新新建(這個是 UITableView 的常識)
2、圖片載入放到後臺進程去進行,滾出可視範圍的載入進程要 cancel 掉
3、圓角、陰影之類的全部 bitmap 化,或者放到後臺 draw 好了再拿來用
4、Cell 裏要用的數據提前緩存好,不要現用現去讀文件
5、數據量太大來不及一次讀完的做一個 load more cell 出來,儘量避免邊滾邊讀數據,這樣就算是雙核的 CPU 也難保不會抽
6、heightForRowAtIndexPath這個方法會計算出你所有cell的高度,所以最好不要做太複雜的算法。
Demo在這: -- 》》》
https://github.com/johnil/VVeboTableViewDemo