iOS之UILabel的自动换行

来源:互联网 发布:sql注入的处理方法 编辑:程序博客网 时间:2024/06/06 12:41

思路:

  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];



1 0