在iOS開發(fā)中,cell高度的適應(yīng)始終是一件比較麻煩的事情.
在我做過的項目中,比較好的方法是讓一個類專門通過數(shù)據(jù)模型來計算cell的高度,然后在tableView代理里面返回算好的高度,這樣做耦合度低,利于復用,而且思路非常清晰,但缺點是使用稍顯復雜.
now福利來了,我們有了UITableView+FDTemplateLayoutCell這個開源類,讓cell高度的自適應(yīng)變得格外容易!
具體的使用方法請戳該類作者博客:http://blog.sunnyxx.com/2015/05/17/cell-height-calculation/
文章對tableViewCell高度計算的原理及此類的實現(xiàn)原理等解釋得非常清晰,具體的使用方法和demo可直接參考文章內(nèi)容.
這里只說幾個需要注意的點:
1.使用該類的時候,cell要通過tableView的registerNib...或者registerClass...的方法進行注冊(聯(lián)想UICollectionViewCell的用法),如:
[tableView registerNib:[UINib nibWithNibName:@"ProdDetailCell" bundle:nil]
forCellReuseIdentifier:@"ProdDetailCell"];
或者:
[tableView registerClass:[ProdDetailCell class]
forCellReuseIdentifier:@"ProdDetailCell"];
2.如果是在模擬器上運行demo,在快速滑動減速的時候會有輕微的卡頓感,這是模擬器渲染導致的,你可以嘗試在真機上運行,非常流暢.
3.cell內(nèi)部控件的約束要加得比較全, 依我的使用經(jīng)驗是內(nèi)部各種豎直方向上的約束要撐滿cell的高度,用該類作者Demo中的一個圖來表示:
如果涉及到的cell布局比較復雜,可能要對某些控件約束的優(yōu)先級進行一些調(diào)整.
4.有小伙伴提到這個框架里面使用了蘋果私有方法,可能會影響上架審核.but....經(jīng)過我與作者的溝通[嬌羞],那已經(jīng)是過去式了,現(xiàn)在的1.2版本去掉了之前的"黑魔法",所以可以放心使用...好嗨森呀
今天得知FDTemplateLayoutCell更新到了1.3版本,現(xiàn)在起,不用 AutoLayout 的同學也可以享受到方便的高度計算和緩存了,這個版本還修復了可能的越界和內(nèi)存泄露問題,以及github上所有Issue,變得更加穩(wěn)定,小伙伴們抓緊時間更新吧.-20150528
當約束添加完畢,按照demo中的使用方法去做,不費吹灰之力就能看到結(jié)果.如果cell有什么改變,也只需要改動cell本身的控件及約束, 僅此而已! 怎么可以這么簡單!
Enjoy your coding!