很多时候我们在加载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;