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;//相当于不限制行数
一句话也可以搞定

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • UILabel是一个常用的控件,它的属性设置的方法在纯代码中经常使用。在storyboard中,使用UILabel...
    坤哥lqk阅读 4,304评论 0 2
  • 对于UILabel其实我觉得并没有太多的要素需要仔细去弄明白的,因为至今为止,我所了解到的label属性不外乎就是...
    懒惰的习惯阅读 3,604评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,486评论 19 139
  • 张小姐再过几个月就24周岁了。但即使现在有人问她年岁,她还是会告诉别人,自己23岁。仿佛24岁的生日是一个重大的典...
    误解了夜孔雀阅读 1,950评论 0 0