很多時候我們在加載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;