大神们一般是如何封装自定义tableViewCell的?如何计算自定义cell的高度?
在自定义高度随着数据模型动态变化的tableViewCell的时候,你们一般是如何进行封装并且计算出cell高度的呢?
我的做法是:
一个控制器VC,一个cell,一个数据模型,一个装有cell所有子控件的frame的类。在VC获取到数据模型后,通过frame类计算好cell的子控件的frame和cell高度。然后在cell中根据数据模型和frame为子控件赋值和设置frame。
不知道各位大神是怎么做的?
还有,在自定义内容动态增减的cell,比如微博cell里面的图片,有时候没有图片,有时候有一张,有时候有多张。这种情况是怎么处理的?是先新建许多imageVeiw,然后根据数据动态隐藏显示,还是根据数据再来动态创建imageVeiw?
最好有个Demo,供小弟参考一下,感激不尽
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
建议使用AutoLayout,不建议在不了解原理的情况下使用第三方封装。
推荐几篇使用 autoLayout 来适配 tableView 动态高度的文:
http://stackoverflow.com/questions/18746929/using-auto-layout-in-uitableview-for-dynamic-cell-layouts-variable-row-heights
http://www.raywenderlich.com/73602/dynamic-table-view-cell-height-auto-layout
高级点的例子:
https://github.com/2359media/STXDynamicTableView
使用 autoLayout 来实现 cell 的动态高度,是在
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
返回高度的时候依赖 cell 的约束来计算高度,这些约束描述了目标 cell 需要的高度。
(上面说了很多
当然你也可以选择不使用autoLayout,那么这时你的代码类似:
就是自己来计算高度,原理就是这样啦
:)
我先来:
抱歉不是大神。
题主的问题1:动态cell的高度如何计算?
MexiQQ的回答是对的,但过于简略了,我用的是RZCellSizeManager,除了使用systemLayoutSizeFittingSize:外,还支持高度的缓存等vip功能。对于复杂的动态cell,性能提升比较明显。该库仅支持iOS7.x、8.x,慎入。
题主的问题2:cell中数量不确定的多张imageView该如何处理?
最近刚做过一个让我想把PM脑袋拧下来的项目,就遇到了这个问题。我个人的实践体验是,在使用autolayout的情况下,当图片数量比较多时,隐藏/显示imageView比动态增删imageView性能要好得多。假如把hidden = YES视为某个方向上的size constraint.constant = 0,则符合apple官方文档中“修改constraint要好于移除并重新添加constraint”的说明。