label根据文本自适应高度

本文介绍了如何在XIB中,通过修改约束而非直接改变frame来调整控件的高度。针对Label,提供了根据文本内容自适应高度的方法,通过`smsDetailLabHeightFortext:`函数计算出适合文本的标签高度,并结合约束动态调整Label的高度。同时强调了Label的宽度应根据屏幕尺寸约束设置,避免使用固定数值,以确保在不同屏幕尺寸下正确显示。

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

在xib约束好的控件 代码是改不了其frame 的  若要改变其高度或者宽度,可以找到其宽度或者高度的约束 将约束拖成属性然后代码改变其属性的contanst大小

self.carrierviewheight.constant = [selfsmsDetailLabHeightFortext:self.smsDetailLab.text];

self.carrierviewheight.constant =29 + self.carrierviewheight.constant;

这个适用于 其他控件(view)的高度随label的高度改变 来设置其高度


//自适应高度

- (CGFloat)smsDetailLabHeightFortext:(NSString *)textStr{

    CGRect bounds = [textStrboundingRectWithSize:CGSizeMake(UIScren mainScren】bounds.size.width - 160, 1000)options:NSStringDrawingUsesLineFragmentOriginattributes:@{NSFontAttributeName : [UIFontsystemFontOfSize:12]}context:nil];

    return bounds.size.height;

    

}

label的宽度一定要根据屏幕约束给宽度  不能给死的数值  因为设置宽度和字体大小  会影响返回的高度数值。

【UIScren mainScren】bounds.size.width 不要用self.view.frame.size.width


// 任意给个初始尺寸, 后面会重新赋值尺寸
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 0, 0)];
[self.view addSubview:label];
NSString *text = @"**** **** **** 1234";
label.text = text;

CGSize size = [text sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:17.0]}];
// ceilf()向上取整函数, 只要大于1就取整数2. floor()向下取整函数, 只要小于2就取整数1.
CGSize size = CGSizeMake(ceilf(size.width), ceilf(size.height));
label.frame = CGRectMake(0, 0, size.width, size.height);
label自适应长度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值