记录一下。。。。
计算字符串高度(宽)
/**
计算字符串高度
*/
- (CGFloat)calculateHeightWithString:(NSString *)str
{
if (str.length < 1) {
return 0;
}
CGRect rect = [str boundingRectWithSize:CGSizeMake(64, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:self.size]} context:nil];
CGFloat height = rect.size.height + 1;
return height;
}
计算字符串的高度注意事项:
- 字符串长度小于1时,应该返回0
- 计算得到的字符串高度后可加1
附加
如果字符串有多行,但是只显示指定行数(多余的直接显示....),该如何计算?
思路:
- 先计算出一行文字的高度(使用@""计算)
- 一行文字的高度 x 指定行数 (需要判断当前文字的行数与指定行数的关系,如果小于指定行数,即计算所有文字的高度)
- 高度加1,即可计算出指定行数高度
- 注意该方式只能计算NSString,不能用于计算NSAttributedString
//条件允许@""的高度计算一次即可
CGRect rect = [@"" boundingRectWithSize:CGSizeMake(64, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:self.size]} context:nil];
CGFloat specifyHeight = rect.size.height * n + 1; //指定行数高度
CGFloat allHeight = 所有文字高度;//计算方式使用上面的代码
//比较取娇小的值,得到有效指定行数文字的高度
CGFloat height = MIN(specifyHeight, allHeight);