这种方法计算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)];
``