经过一段时间的考证发现各种计算label高度的方法都或多或少存在一些问题,高度可能都会存在点问题,今天提出一种方法,大家可以验证一下,如果有问题,留言一些研讨。
//NSMutableParagraphStyle:段落样式类
//lineHeightMultiple: attributedString 显示的是否偏上、偏下、调节这个值可以使得attributeString居中,之前大家用boundingRectWithSize这个方法得出的高度可能会不太准确,如今加入NSMutableParagraphStyle这个类以后,可以再试试
如下是封装的一个类,大家根据情况自行修改
- (CGSize)getLableSize:(NSAttributedString *)attr paragraphStyle: (NSTextAlignment)textAlignment lineHeightMultiple: (CGFloat)lineHeightMultiple font:(CGFloat)font maxWidth:(CGFloat)maxWidth {
NSMutableParagraphStyle *ps = [[NSMutableParagraphStyle alloc] init];
ps.alignment = textAlignment;
ps.lineHeightMultiple = lineHeightMultiple;
NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithAttributedString:attr];
[str setAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:font], NSParagraphStyleAttributeName:ps} range:NSMakeRange(0, str.length)];
CGSize size = [str boundingRectWithSize:CGSizeMake(maxWidth, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading context:nil].size;
return size;
}