如果是比较复杂的cell,里边有好多控件,而且有的控件不一定在每个 cell都显示的话,用李明杰给出的思路,挺好。思路大概是,请求数据后,每条数据对应一个模型,然后对应每个模型 ,创建一个frameModeL,给它传入一个数据模型,他会把相应的控件的frame 和整个cell的高度计算好,然后在cell里有一个属性,可以framemodel 的属性,在他的setter方法里直接赋值就好,赋值包括数据 和frame ,应为这个方法是cell滑动就会调用,这样每次调用时,只拿值,不进行计算,节省性能。 而在heightforrow方法里,直接拿到相应的frameModel,然后返回就好。
1.李明杰的思路—FrameModel
创建的framemodel模型,给它传入一个数据model,它会为每个控件生成相应的frame
然后在cell方法里直接赋值就可以了
而在heightforrow里
这就是李明杰讲的思路,拿到数据就会计算,而不是在cell展示的数据再进行计算。把计算的操作放在了后台,所以性能上应该没有问题。
我写的时候不小心写错的地方
lab的字体大小 要和boundrect里的一样,还有注意换行。
如果cell的数目较少,就没有性能的问题,那么大可以用系统的
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return UITableViewAutomaticDimension; //自动调整约束,性能非常低,灰常的卡
}
不考虑架构的话, 可以给数据模型增加一个属性, 计算的高度,比较简单粗暴。