您的位置:首页 > 产品设计 > UI/UE

UILabel如何根据富文本内容计算高度

2016-12-14 19:28 423 查看
方法1:

(第一段代码和法2第一段相同)
NSString *str = @"这是一个有关富文本的一个记录,希望能帮助一些刚刚入行不久的同行们一起进步,让大家都能躺仰的iOS代码的世界里,尽情享受";
NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:str];
NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
style.lineSpacing = 10;
UIFont *font = [UIFont systemFontOfSize:20];
[attributeString addAttribute:NSParagraphStyleAttributeName value:style range:NSMakeRange(0, str.length)];
[attributeString addAttribute:NSFontAttributeName value:font range:NSMakeRange(0, str.length)];
NSStringDrawingOptions options = NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading;
CGRect labelRect = [attributeString boundingRectWithSize:CGSizeMake(688, CGFLOAT_MAX) options:options context:nil];
NSLog(@"size:%@", NSStringFromCGSize(labelRect.size));
_contentLabel.attributedText = attributeString;
_contentLabel.frame = CGRectMake(40, _titleLabel.frame.size.height+_titleLabel.frame.origin.y+15, labelRect.size.width, labelRect.size.height);
方法2:
(第一段代码和法1第一段相同)

NSString *str = @"这是一个有关富文本的一个记录,希望能帮助一些刚刚入行不久的同行们一起进步,让大家都能躺仰的iOS代码的世界里,尽情享受";
NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:str];
NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
style.lineSpacing = 10;
UIFont *font = [UIFont systemFontOfSize:20];
[attributeString addAttribute:NSParagraphStyleAttributeName value:style range:NSMakeRange(0, str.length)];
[attributeString addAttribute:NSFontAttributeName value:font range:NSMakeRange(0, str.length)];
//1.计算label的高度
//textRect..方法可以根据指定的最大区域
//计算文本最终占据的实际的空间大小
CGRect textOfRect = [self.contentLabel textRectForBounds:CGRectMake(0, 0, 688, CGFLOAT_MAX) limitedToNumberOfLines:0];
//根据label的大小计算label的frame
_contentLabel.attributedText = attributeString;
_contentLabel.frame = CGRectMake(40, _titleLabel.frame.size.height+_titleLabel.frame.origin.y, textOfRect.size.width, textOfRect.size.height);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: