tableview的cell自定义高度

        如果是比较复杂的cell,里边有好多控件,而且有的控件不一定在每个 cell都显示的话,用李明杰给出的思路,挺好。思路大概是,请求数据后,每条数据对应一个模型,然后对应每个模型 ,创建一个frameModeL,给它传入一个数据模型,他会把相应的控件的frame 和整个cell的高度计算好,然后在cell里有一个属性,可以framemodel 的属性,在他的setter方法里直接赋值就好,赋值包括数据 和frame ,应为这个方法是cell滑动就会调用,这样每次调用时,只拿值,不进行计算,节省性能。 而在heightforrow方法里,直接拿到相应的frameModel,然后返回就好。

1.李明杰的思路—FrameModel


tableview的cell自定义高度_第1张图片

创建的framemodel模型,给它传入一个数据model,它会为每个控件生成相应的frame


tableview的cell自定义高度_第2张图片
tableview的cell自定义高度_第3张图片

然后在cell方法里直接赋值就可以了


tableview的cell自定义高度_第4张图片

而在heightforrow里


tableview的cell自定义高度_第5张图片

这就是李明杰讲的思路,拿到数据就会计算,而不是在cell展示的数据再进行计算。把计算的操作放在了后台,所以性能上应该没有问题。

我写的时候不小心写错的地方

lab的字体大小 要和boundrect里的一样,还有注意换行。



如果cell的数目较少,就没有性能的问题,那么大可以用系统的

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

return UITableViewAutomaticDimension;      //自动调整约束,性能非常低,灰常的卡

}

不考虑架构的话, 可以给数据模型增加一个属性, 计算的高度,比较简单粗暴。

你可能感兴趣的:(tableview的cell自定义高度)