在iOS开发中,cell高度的适应始终是一件比较麻烦的事情.
在我做过的项目中,比较好的方法是让一个类专门通过数据模型来计算cell的高度,然后在tableView代理里面返回算好的高度,这样做耦合度低,利于复用,而且思路非常清晰,但缺点是使用稍显复杂.
now福利来了,我们有了UITableView+FDTemplateLayoutCell这个开源类,让cell高度的自适应变得格外容易!
具体的使用方法请戳该类作者博客:http://blog.sunnyxx.com/2015/05/17/cell-height-calculation/
文章对tableViewCell高度计算的原理及此类的实现原理等解释得非常清晰,具体的使用方法和demo可直接参考文章内容.
这里只说几个需要注意的点:
1.使用该类的时候,cell要通过tableView的registerNib...或者registerClass...的方法进行注册(联想UICollectionViewCell的用法),如:
[tableView registerNib:[UINib nibWithNibName:@"ProdDetailCell" bundle:nil]
forCellReuseIdentifier:@"ProdDetailCell"];
或者:
[tableView registerClass:[ProdDetailCell class]
forCellReuseIdentifier:@"ProdDetailCell"];
2.如果是在模拟器上运行demo,在快速滑动减速的时候会有轻微的卡顿感,这是模拟器渲染导致的,你可以尝试在真机上运行,非常流畅.
3.cell内部控件的约束要加得比较全, 依我的使用经验是内部各种竖直方向上的约束要撑满cell的高度,用该类作者Demo中的一个图来表示:
如果涉及到的cell布局比较复杂,可能要对某些控件约束的优先级进行一些调整.
4.有小伙伴提到这个框架里面使用了苹果私有方法,可能会影响上架审核.but....经过我与作者的沟通[娇羞],那已经是过去式了,现在的1.2版本去掉了之前的"黑魔法",所以可以放心使用...好嗨森呀
今天得知FDTemplateLayoutCell更新到了1.3版本,现在起,不用 AutoLayout 的同学也可以享受到方便的高度计算和缓存了,这个版本还修复了可能的越界和内存泄露问题,以及github上所有Issue,变得更加稳定,小伙伴们抓紧时间更新吧.-20150528
当约束添加完毕,按照demo中的使用方法去做,不费吹灰之力就能看到结果.如果cell有什么改变,也只需要改动cell本身的控件及约束, 仅此而已! 怎么可以这么简单!
Enjoy your coding!