iOS雨笙 lable自适应高度(多用于tableview的自定义cell中)

        本文主要介绍的是UILable中的文字自适应高度.很多种情况下,多个lable中文字的数量是不能确定的,所以我们无法给这些lable一个确切的高度,这里就需要lable去自适应其自己的高度,这种情形多用于tableview中自定义cell中,代码比较简单,下面列举一个小例子,望大家能够灵活运用.

      先创建一个UILable,它的frame是给定的,并且设置字号大小;

    // 创建一个UILable
    UILabel *lable = [[UILabel alloc] initWithFrame:CGRectMake(50, 100, 300, 100)];
    // 设置lable的字号为16,这里必须要设置,根据字号来判断高度
    lable.font = [UIFont systemFontOfSize:16];
    // 要输入的字符串内容,要足够长
    NSString *str = @"东京下雨,湿了巴黎.东京下雨,湿了巴黎.东京下雨,湿了巴黎.东京下雨,湿了巴黎.东京下雨,湿了巴黎.
    东京下雨,湿了巴黎.东京下雨,湿了巴黎.东京下雨,湿了巴黎.东京下雨,湿了巴黎.东京下雨,湿了巴黎.东京下雨,湿了巴黎.
    东京下雨,湿了巴黎.东京下雨,湿了巴黎.东京下雨,湿了巴黎.";
    lable.text = str;
    // 让lable折行显示
    lable.numberOfLines = 0;
       下面要进行自适应高度了,首先创建一个字体大小的字典,这里字体大小的号一定要和上面的一致.这个字典下面要用:

// 创建一个字体大小的字典
      NSDictionary *dic = [NSDictionary dictionaryWithObject:[UIFont systemFontOfSize:16] 
      forKey:NSFontAttributeName];
        下面就要计算一个300宽(宽是不会变的,一开始给定多少就是多少,只有高会变)的lable的frame了

// 返回值是CGRECT,下面这个CGSizeMake中的高度1000000是随意给定的,条件只有一个,能保证这个高度比显示完整字符串后的
    lable高度要高,就是一个不可能到达的高度
// NSStringDrawingUsesLineFragmentOrigin的意思是按照文本的矩形区域返回高度
    CGRect frame = [str boundingRectWithSize:CGSizeMake(300, 1000000) 
    options:NSStringDrawingUsesLineFragmentOrigin attributes:dic context:nil];
    NSLog(@"%f",frame.size.height);
    // 下面三行表示重新给lable赋值frame
    CGRect newFrame = lable.frame;
    newFrame.size.height = frame.size.height;
    lable.frame = newFrame;
        这样,一个自适应的lable的高度就完成了,这是最基本的方式,也是最简单的方式,大多用于tableview中的cell中,原理一致,只要灵活运用即可.


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值