iOS UILabel 自适应

本文介绍 UILabel 在不同约束条件下如何自适应调整其尺寸以适应不同长度的文本内容,包括固定宽度时增加高度及固定高度时增加宽度的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 固定宽度

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 21)];
    if (label) {
        // 设置文本内容
        label.text = @"我真的很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长";
        // 0代表不限制行数
        [label setNumberOfLines:0];
        // 因为行数不限制,所以这里在宽度不变的基础上(实际宽度会略为缩小),高度会自动扩充
        [label sizeToFit];
        
        [self.view addSubview:label];
        [label release];
    }

        因为label设定为行数无限制,所以label自适应会增加label的高度,实际的label.frame为(0, 0, 306, 105)

二 固定高度

UILabel *label2 = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 21)];
    if (label2) {
        // 设置文本内容
        label2.text = @"我真的很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长";
        // 0代表不限制行数
        [label2 setNumberOfLines:1];
        // 因为这里行数进行了限制,所以这里在高度不变的基础上,宽度增加了
        [label2 sizeToFit];
        
        [self.view addSubview:label2];
        [label2 release];
    }

        因为label对行数进行了限制,固定为1行,所以自适应会增加label的宽度,实际的label.frame为(0, 0, 1275, 21)。

        以此类推,如果将行数设置为2,那么label.frame将会变为(0, 0, 306, 42);随着行数增加,label.frame会越来越逼近(0, 0, 306, 105),最后等于这个值(当行数大于等于5);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值