• iOS之UILabel的自动换行


    思路:

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

    实现:

     1 UILabel *label = [[UILabel alloc] init];
     2 
     3     label.text = @"你好,这是UILabel的自动换行测试内容,主要实现多行数据的自动换行,自适应不同行数的数据";
     4 
     5     NSDictionary *attribute = @{NSFontAttributeName: [UIFont systemFontOfSize:14]};
     6 
     7     CGSize labelSize = [label.text boundingRectWithSize:CGSizeMake(200, 5000) options: NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:attribute context:nil].size;
     8 
     9 //200为UILabel的宽度,5000是预设的一个高度,表示在这个范围内
    10 
    11 //注意:之前使用了NSString类的sizeWithFont: constrainedToSize: lineBreakMode:方法,但是该方法已经被iOS7 Deprecated了,而iOS7新出了一个boudingRectWithSize: options: attributes: context:方法来代替。
    12 
    13     label.frame = CGRectMake(label.frame.origin.x, label.frame.origin.y, label.frame.size.width, labelSize.height);
    14 
    15 //保持原来Label的位置和宽度,只是改变高度。
    16 
    17     label.numberOfLines = 0;//表示label可以多行显示
    18 
    19     label.textColor = UICOLOR_FROM_RGB(100, 100, 100, 1);
    20 
    21     label.font = [UIFont systemFontOfSize:14];
    22 
    23     [self.view addSubview:label];
    24 
    25  
  • 相关阅读:
    静态导入
    OC中的Debug表达式
    友盟消息推送(一)
    Xcode7.0 更新完后,网络请求报错
    HTTP返回的状态码
    ios 通知监听App进入后台,然后再进入App(获取验证码的时间间隔)
    iOS保存model数据(自定义Model 可以存放到本地)
    tatableView 刷新
    iOS bounds和Frame的区别
    UIButton下面添加滑动的线
  • 原文地址:https://www.cnblogs.com/rglmuselily/p/6097549.html
Copyright © 2020-2023  润新知