iOS 01、UILabel的(size)高度自适应

第一种思路:
采用label的属性设置完成要求

1.创建label并设置初始化frame
2.设置行号numberOfLines,默认为1,0为不限制行数,可根据情况进行设定,这里我们设置自适应把其暂且设置为0
3.设置显示单位lineBreakMode为:NSLineBreakByWordWrapping(枚举值)
// NSParagraphStyle
typedef NS_ENUM(NSInteger, NSLineBreakMode) {
NSLineBreakByWordWrapping = 0,    // 以空格为界,保留整个字词
NSLineBreakByCharWrapping,  //保留整个字符
NSLineBreakByClipping,  // Simply clip 简单剪裁,到边界为止
NSLineBreakByTruncatingHead,    // Truncate at head of line: "...wxyz"显示尾部文字内容
NSLineBreakByTruncatingTail,    // Truncate at tail of line: "abcd..."显示头部文字内容
NSLineBreakByTruncatingMiddle   // Truncate middle of line:  "ab...yz"显示头尾文字内容
} NS_ENUM_AVAILABLE(10_0, 6_0);
4.添加文本内容(文字大小font 也可根据UIFont自定义设置)
5.用sizeThatFits重新获取label的size大小
实现代码(个别顺序可按自己代码风格自行改变):
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(20, 250, 300, 0)];
label.numberOfLines = 0;//相当于不限制行数
label.lineBreakMode = NSLineBreakByWordWrapping;//以单词为显示单位显示,后面部分省略不显示
//    label.font=[UIFont systemFontOfSize:20];  //设置文字大小
label.text= @"君不见,黄河之水天上来⑵,奔流到海不复回。君不见,高堂明镜悲白发,朝如青丝暮成雪⑶。人生得意须尽欢⑷,莫使金樽空对月。天生我材必有用,千金散尽还复来。烹羊宰牛且为乐,会须一饮三百杯⑸。岑夫子,丹丘生⑹,将进酒,杯莫停⑺。与君歌一曲⑻,请君为我倾耳听。";
label.textAlignment = NSTextAlignmentLeft;  //文本对齐方式
CGSize size = [label sizeThatFits:CGSizeMake(label.frame.size.width, MAXFLOAT)];
label.frame =CGRectMake(20, 250, 300, size.height);
[self.view addSubview:label];

第二种思路:

NSString *text = @"君不见,黄河之水天上来⑵,奔流到海不复回。君不见,高堂明镜悲白发,朝如青丝暮成雪⑶。人生得意须尽欢⑷,莫使金樽空对月。天生我材必有用,千金散尽还复来。烹羊宰牛且为乐,会须一饮三百杯⑸。岑夫子,丹丘生⑹,将进酒,杯莫停⑺。与君歌一曲⑻,请君为我倾耳听。";
CGRect textFrame = CGRectMake(0, 0, 250, 250);
NSDictionary *dict = @{NSFontAttributeName:[UIFont systemFontOfSize:20],
NSForegroundColorAttributeName:[UIColor redColor],
NSStrokeWidthAttributeName:@5
};
UIRectFill(textFrame);
//不会换行
//[text drawAtPoint:CGPointZero withAttributes:dict];
[text drawInRect:textFrame withAttributes:dict];

直接使用label.numberOfLines = 0;//相当于不限制行数
一句话也可以搞定

你可能感兴趣的:(iOS 01、UILabel的(size)高度自适应)