根据fontSize计算String的size的高度可以由以下方法:
+(CGFloat)getHeightSizeFromString:(NSString *)myString Font:(UIFont *)myFont Width:(float)myWidth {
NSMutableAttributedString* attributedText = [[NSMutableAttributedString alloc]initWithString:myString];
[attributedText addAttribute:NSFontAttributeName value:myFont
range:NSMakeRange(0, [attributedText length])];
NSStringDrawingOptions options = NSStringDrawingUsesLineFragmentOrigin |
NSStringDrawingUsesFontLeading;
CGRect boundingRect = [attributedText boundingRectWithSize:CGSizeMake(myWidth, CGFLOAT_MAX)
options:options
context:nil];
return ceil(boundingRect.size.height);
}
这个时候UILable的多行设置则为:
NSString* str1 = @“测试用的长数据,<span style="font-family: Arial, Helvetica, sans-serif;">测试用的长数据,</span><span style="font-family: Arial, Helvetica, sans-serif;">测试用的长数据,</span><span style="font-family: Arial, Helvetica, sans-serif;">测试用的长数据,</span><span style="font-family: Arial, Helvetica, sans-serif;">测试用的长数据,</span><span style="font-family: Arial, Helvetica, sans-serif;">测试用的长数据,</span>”;
CGFloat height = [TMFontUtil getHeightSizeFromString:str1 Font:BoldColor(12) Width:(Rect.size.width - 15*2)];
CGRect frame = CGRectMake(15, 10, Rect.size.width - 15*2, height);
UILabel * messageLabel1 = [[UILabel alloc] initWithFrame:frame];
messageLabel1.font = BoldColor(12);
messageLabel1.text = str1;
messageLabel1.textColor = TitleColor;
messageLabel1.numberOfLines = 0;
messageLabel1.lineBreakMode = NSLineBreakByWordWrapping;