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

(转载)iOS UILabel自定义行间距时获取高度

2016-01-05 19:36 309 查看
本文介绍一下自定义行间距的UILabel的高度如何获取,需要借助一下开源的UILabel控件:TTTAttributedLabel

附下载地址 https://github.com/TTTAttributedLabel/TTTAttributedLabel
下载后,添加到工程里面,导入头文件

 #import "TTTAttributedLabel.h"


直接上代码

NSString *str = @"UILabel自定义行间距时获取高度,UILabel自定义行间距时获取高度,UILabel自定义行间距时获取高度,UILabel自定义行间距时获取高度,UILabel自定义行间距时获取高度,UILabel自定义行间距时获取高度,UILabel自定义行间距时获取高度.";

//创建tttLabel
TTTAttributedLabel *tttLabel = [[TTTAttributedLabel alloc] initWithFrame:CGRectMake(30, 55, 300, 100)];
tttLabel.lineBreakMode = NSLineBreakByCharWrapping;
tttLabel.lineSpacing = 6;//设置行间距
tttLabel.font = [UIFont systemFontOfSize:12];
tttLabel.numberOfLines = 0; //设置行数为0
[tttLabel setText:str];
tttLabel.textAlignment = NSTextAlignmentLeft;
tttLabel.backgroundColor = [UIColor redColor];
[self.view addSubview:tttLabel];

//获取tttLabel的高度
//先通过NSMutableAttributedString设置和上面tttLabel一样的属性,例如行间距,字体
NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:str];
//自定义str和TTTAttributedLabel一样的行间距
NSMutableParagraphStyle *paragrapStyle = [[NSMutableParagraphStyle alloc] init];
[paragrapStyle setLineSpacing:6];
//设置行间距
[attrString addAttribute:NSParagraphStyleAttributeName value:paragrapStyle range:NSMakeRange(0, str.length)];
//设置字体
[attrString addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:12] range:NSMakeRange(0, str.length)];

//得到自定义行间距的UILabel的高度
CGFloat height = [TTTAttributedLabel sizeThatFitsAttributedString:attrString withConstraints:CGSizeMake(300, MAXFLOAT) limitedToNumberOfLines:0].height;

//重新改变tttLabel的frame高度
CGRect rect = tttLabel.frame;
rect.size.height = height;
tttLabel.frame = rect;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: