iOS 计算label高度的准确方法

这种方法计算label高度,会少计算间距

- (CGSize)calculateStringWithFont:(CGFloat)font Size:(CGSize)size {
    // 影响文字大小的因素有:
    // 1.跟文字的字体大小有关
    // 2.跟它限定的宽度有关,宽度越窄,高度越高
    // 第一个参数:传入一个 CGSize 用来限定它最大的宽度是多少,最大的高度是多少
    //   如果没有达到最大的宽度和最大的高度,那么久返回实际尺寸,如果超过了你限定的最大宽度和高度,那么只会返回你最大的宽度和高度
    // 第二个参数:直接传 NSStringDrawingUsesLineFragmentOrigin 就可以,因为它既可以计算单行,也可以计算多行
    // 第三个参数: 传入一个字典,这个字典就是让你设置字体的大小的,或者字体颜色
    NSDictionary *attr = @{ NSFontAttributeName : [UIFont systemFontOfSize:font]};
    return [self boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin attributes:attr context:nil].size;
}

以下方法会包含字体间距,计算更为准确

self.messageLabel.preferredMaxLayoutWidth = 260;
CGSize size = [self.messageLabel sizeThatFits:CGSizeMake(self.messageLabel.preferredMaxLayoutWidth,CGFLOAT_MAX)];
``

你可能感兴趣的:(iOS 计算label高度的准确方法)