iOS 计算字符串高度(宽)

2021-12-22  本文已影响0人  芮淼一线

记录一下。。。。

计算字符串高度(宽)
/**
 计算字符串高度
 */
- (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. 字符串长度小于1时,应该返回0
  2. 计算得到的字符串高度后可加1
附加

如果字符串有多行,但是只显示指定行数(多余的直接显示....),该如何计算?
思路:

  1. 先计算出一行文字的高度(使用@""计算)
  2. 一行文字的高度 x 指定行数 (需要判断当前文字的行数与指定行数的关系,如果小于指定行数,即计算所有文字的高度)
  3. 高度加1,即可计算出指定行数高度
  4. 注意该方式只能计算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);

上一篇 下一篇

猜你喜欢

热点阅读