版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1337809
之前的一篇文章(http://blog.csdn.net/u010105969/article/details/53203860)介绍了利用字典缓存cell高度的方法,可还是略显复杂,因为要多定义一个字典,还得注意字典数据的清除。我们如果利用已有的模型进行cell高度的缓存会更简单些。
我们要利用的模型是与cell一一对应的模型。在该模型中增添一个cellHeight的属性用于记录cell的高度。看代码:
// 重写cell的get方法
if (_cellHeight == 0.f) { // 如果单元格高度为零
CGFloat cellHeight = 0;
cellHeight += 30;
NSString * text = self.text;
NSMutableDictionary * dic = NSMutableDictionary dictionary;
dicNSFontAttributeName = UIFont systemFontOfSize:17;
CGRect textRect = text boundingRectWithSize:CGSizeMake(WIDTH-20, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:dic context:nil;
cellHeight += textRect.size.height;
cellHeight += 30;
_cellHeight = cellHeight;
NSLog(@"cell 高度%f", _cellHeight);
}
return _cellHeight;
}
以上的代码写在模型的.m文件中。此时heightForRowAtIndexPath方法中的代码为:
TopicModel * model = self.dataSourceindexPath.row;
return model.cellHeight;
}
看是不是Controller中的代码精简了许多。