简介
在IOS开发中,经常使用UITableView的小伙伴就遇到动态计算UITableViewCell高度用于展示不同数量的文本字段。
实现代码
/** 动态计算文本的高度 @param post 传入数据对象 @return 计算完成的高度 */ + (CGFloat)heightForCellWithPost:(Post *)post { return (CGFloat)fmaxf(70.0f, (float)[self detailTextHeight:post.text] + 45.0f); } /** 根据文本的的高度动态计算文本的高度具体实现 @param text 文本 @return 文本高度 */ + (CGFloat)detailTextHeight:(NSString *)text { CGRect rectToFit = [text boundingRectWithSize:CGSizeMake(240.0f, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName: [UIFont systemFontOfSize:12.0f]} context:nil]; return rectToFit.size.height; }
代码调用
我们一般在UITableView Delegate方法:heightForRowAtIndexPath 里面设置UITableViewCell的高度,所有我们在 此方法中,调用计算高度的方法即可。
- (CGFloat)tableView:(__unused UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return [PostTableViewCell heightForCellWithPost:self.posts[(NSUInteger)indexPath.row]]; }