星空网 > 软件开发 > 操作系统

iOS之UILabel的自动换行

思路:

  1. 获取UILabel的frame大小
  2. 获取UILabel的字体大小
  3. 获取UILabel的文本内容
  4. 根据上面的3部分数据,计算文本显示区域大小
  5. 根据4计算的大小,实时改变UILabel的frame

实现:

UILabel *label = [[UILabel alloc] init];

    label.text = @"你好,这是UILabel的自动换行测试内容,主要实现多行数据的自动换行,自适应不同行数的数据";

    NSDictionary *attribute = @{NSFontAttributeName: [UIFont systemFontOfSize:14]};

    CGSize labelSize = [label.text boundingRectWithSize:CGSizeMake(200, 5000) options: NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:attribute context:nil].size;

//200为UILabel的宽度,5000是预设的一个高度,表示在这个范围内

//注意:之前使用了NSString类的sizeWithFont: constrainedToSize: lineBreakMode:方法,但是该方法已经被iOS7 Deprecated了,而iOS7新出了一个boudingRectWithSize: options: attributes: context:方法来代替。

    label.frame = CGRectMake(label.frame.origin.x, label.frame.origin.y, label.frame.size.width, labelSize.height);

//保持原来Label的位置和宽度,只是改变高度。

    label.numberOfLines = 0;//表示label可以多行显示

    label.textColor = UICOLOR_FROM_RGB(100, 100, 100, 1);

    label.font = [UIFont systemFontOfSize:14];

    [self.view addSubview:label];

 




原标题:iOS之UILabel的自动换行

关键词:IOS

IOS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

亚马逊怒砍「无人配送」,欧美「最后一公里」怎么就不行了?:https://www.ikjzd.com/articles/1586983927608516609
想申诉怎么办?亚马逊的行动计划书POA怎么写?看这一篇就够了!:https://www.ikjzd.com/articles/1586992924742782977
盘点亚马逊五大促销类型如何提报?:https://www.ikjzd.com/articles/1586993417007407106
跨境电商万圣节社媒营销:8个方法助你冲出重围!:https://www.ikjzd.com/articles/1587000866082787329
高质量、高转化率的营销视频怎么制作?:https://www.ikjzd.com/articles/1587022563964100610
揭秘非洲:当地人的消费习惯是怎样的?:https://www.ikjzd.com/articles/1587258799861538817
我要去沙坡头旅游景区 沙坡头景区游玩线路:https://www.vstour.cn/a/404247.html
强者之路好玩还是启航 《海贼王》手游有几款?哪款比较好玩?:https://www.vstour.cn/a/404248.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流