iOS 自适应label行高

本文详细介绍了在iOS开发中如何实现UILabel的行高自适应,内容包括使用NSString的sizeWithAttributes方法计算文本高度、设置UILabel的约束以及动态调整行数等关键步骤,旨在帮助开发者优化UI显示效果。

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

在使用label显示文字时,会出现只显示一行内容的情况,此时需要设置根据内容和字号判断尺寸。
核心代码如下:
//获取内容
        CommentModel *model = self.data[indexPath.row];
        NSString *content = model.content;

        //属性字典
        NSDictionary *attributes = @{ NSFontAttributeName:[UIFont systemFontOfSize:17] };

        //根据内容和字号判断尺寸
        /*
         rectWithSize:
         width:label的实际宽度
         height:label的最大高度(如果超出这个高度,剩余文字会以省略号的形式出现)
         options:NSStringDrawingUsesLineFragmentOrigin 忽略该选项
         attributes:属性字典
         */
        //根据约束计算:123
        //        8+77+8+( labelWidth+8+14)+8 = tableViewWidh
        CGRect rect = [content boundingRectWithSize:CGSizeMake(tableView.frame.size.width-123, 1000)
                                            options:NSStringDrawingUsesLineFragmentOrigin
                                         attributes:attributes
                                            context:nil];

        //根据约束计算:58
        //8+(8+24+8+2+labelHeight)+8 =cellHeight
        //10:微调
        CGFloat cellHeight = rect.size.height+58+10;

        if (cellHeight < 110) {

            cellHeight = 110;
        }

        return cellHeight;
    }

    return 110;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值