之前一直以为,单行文字的高度等于font的大小,也没有细细研究,好吧,其实这种想当然的认识是极其不正确的,还是需要通过方法进行计算。
单行文本高度的计算方法
-(CGFloat)singLineTextSize{
CGFloat height = 0;
height = [@"这是一个单行文本。" sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:15.0]}].height;
return height;
}```
NSLog可以看出文本高度是17.9,跟字体大小15.0还是差的挺多的。
####多行文本高度的计算方法
NSMutableAttributedString *GetAttributedText(NSString *value) {//这里调整富文本的段落格式
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:value];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle setLineSpacing:8.0];
// [paragraphStyle setParagraphSpacing:11]; //调整段间距
// [paragraphStyle setHeadIndent:75.0];//段落整体缩进
// [paragraphStyle setFirstLineHeadIndent:.0];//首行缩进
[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [value length])];
return attributedString;
}
- (CGFloat)calculateMeaasgeHeightWithText:(NSString *)string andWidth:(CGFloat)width andFont:(UIFont *)font {
static UILabel *stringLabel = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{//生成一个同于计算文本高度的label
stringLabel = [[UILabel alloc] init];
stringLabel.numberOfLines = 0;
});
stringLabel.font = font;
stringLabel.attributedText = GetAttributedText(string);
return [stringLabel sizeThatFits:CGSizeMake(width, MAXFLOAT)].height;
}```