CoderMrWu

生活诚可期,爱情价更高!

IOS实现根据文本来动态计算UITableViewCell的高度

简介

在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]];

}
点赞