iOS 根据文字内容动态设置宽度与高度

本文介绍了一个简单的文字排版代码片段,详细解释了如何通过计算Label的宽高来实现文字的精确显示,并提供了懒加载Label组件的方法及自定义样式技巧。

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

下面说一下在开发中,遇到的一个简单的文字排版代码片段。

//这是计算 label 根据文字的显示 格式和字数得出的宽高

- (CGSize) calculateLabelSize:(UILabel *)label{

    // 设置Label的字体 HelveticaNeue  Courier
    UIFont *fnt = [UIFont fontWithName:label.text size:label.font.pointSize];
    label.font = fnt;
    // 根据字体得到NSString的尺寸
    CGSize size = [label.text sizeWithAttributes:[NSDictionary dictionaryWithObjectsAndKeys:label.font,NSFontAttributeName, nil]];
    // 名字的H
    CGFloat nameH = size.height;
    // 名字的W
    CGFloat nameW = size.width;
    CGSize sizes = CGSizeMake(nameW, nameH);
    return sizes;


}
//限制 label 显示的最大宽度和设置显示的样式  【我是懒加载的形式去创建 label,然后重写 get 方法自定义 label 的样式】
- (UILabel *)addRess{
    if (_addRess == nil) {

        _addRess = [[UILabel alloc] init];
        _addRess.font = [UIFont systemFontOfSize:9.f];
        _addRess.lineBreakMode = NSLineBreakByTruncatingTail;
        _addRess.numberOfLines = 0;
        [self.contentView addSubview:_addRess];
    }
   CGSize size = [self calculateLabelSize:_addRess];
    _addRess.frame = CGRectMake(_addRess.frame.origin.x, _addRess.frame.origin.y, size.width>=200.f?200.f:size.width, size.height);

    return _addRess;

}
小小技术点,可自行 get
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值