iOS 计算文本高度[填坑版]

很多时候我们在加载table的时候,需要计算文本高度,但是计算会有误差;


省略文字描述,直接eg:


str = @"这个文本有4个空格    ,宽度定义为320,sizeToFit,font14.场景:这段文字4行多2个字,因为这4个空格,我们计算只能得到3行的高度";

CGRect textRect = [str boundingRectWithSize:CGSizeMake(kScreenWidth, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.f]} context:nil];

//当文本中 空格  刚好影响到换行的时候,计算高度会严重偏差,所以我们在计算的时候这样做:

添加NSString+Calculate方法,对你需要计算高度的文本进行处理,利用NSString的替换字符串方法(stringByReplacingOccurrencesOfString:@" " withString:@"k"),把文本中的空格替换成一个字母,然后再计算.

CGRect textRect = [[str calculateText] boundingRectWithSize:CGSizeMake(kScreenWidth,

MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin |

NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName:[UIFont

systemFontOfSize:14.f]} context:nil];

//[str calculateText] 是你自己写的类目方法;替换的字母有没有讲究我没去深入了解

最后一步:对文本计算的高度取整+1

CGFloat cellHeight = ceil(textRect.size.height) + 1;




推荐阅读更多精彩内容