UILabel显示固定行数的问题

在项目中我们有时会遇到这样的需求:显示一段文字,但这段文字最多显示4行。

我们首先考虑没有行数显示的情况:

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

    lbl.backgroundColor = [UIColor redColor];

    lbl.textColor = [UIColor blackColor];

    lbl.numberOfLines = 0;

    lbl.text = @"连卡精神分裂就离开家啊";

    lbl.lineBreakMode = UILineBreakModeWordWrap;

    NSMutableDictionary * dic = [NSMutableDictionary dictionary];

    dic[NSFontAttributeName] = [UIFont systemFontOfSize:17];

    CGRect rect = [lbl.text boundingRectWithSize:CGSizeMake(100, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:dic context:nil];

    NSLog(@"%f-----%f", rect.size.width, rect.size.height);

    lbl.frame = (CGRect){{0, 20}, rect.size};

 

    [self.view addSubview:lbl];

这样单元格高度会进行自适应。

如果显示固定行数,我们需要知道固定行数时单元格的高度

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

    lbl.backgroundColor = [UIColor redColor];

    lbl.textColor = [UIColor blackColor];

    lbl.numberOfLines = 0;

    lbl.text = @"连卡精神分裂就离开家啊";

    lbl.lineBreakMode = UILineBreakModeWordWrap;

    NSMutableDictionary * dic = [NSMutableDictionary dictionary];

    dic[NSFontAttributeName] = [UIFont systemFontOfSize:17];

    CGRect rect = [lbl.text boundingRectWithSize:CGSizeMake(100, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:dic context:nil];

    NSLog(@"%f-----%f", rect.size.width, rect.size.height);

    lbl.frame = (CGRect){{0, 20}, rect.size};

  if (rect.size.height > 102) {

        lbl.numberOfLines = 5;

        lbl.frame = (CGRect){{0, 20}, {100, 101.435547}};

    }

    [self.view addSubview:lbl];



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值