ios label根据内容自适应高度

label自适应高度,想必大家也都很熟悉怎么去做,上代码:

UILabel *label3 = [[UILabel alloc]initWithFrame:CGRectMake(150, 50, 150, 0)]; label3.font = [UIFont systemFontOfSize:15]; label3.backgroundColor = [UIColor yellowColor]; label3.numberOfLines = 0; label3.text = str; CGSize size = [label3 sizeThatFits:CGSizeMake(label3.frame.size.width, MAXFLOAT)]; label3.frame = CGRectMake(label3.frame.origin.x, label3.frame.origin.y, label3.frame.size.width, size.height); NSLog(@"label3.frame = %@",NSStringFromCGRect(label3.frame)); [self.view addSubview:label3]; 

但是这个地方有点小问题,###1:我不知道大家处理的习惯(比较菜,勿喷),我比较习惯把处理UI的逻辑和赋值的逻辑分开,那么就会有这样的代码

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self initUI];
    
    self.label.text = @"啥都不是较好的发布会绝对是部分谁看见对方比较快速的步伐会尽快"; } -(void)initUI { self.label = [[UILabel alloc]initWithFrame:CGRectMake(10, 100, 100, 30)]; self.label.numberOfLines = 0; self.label.textColor = [UIColor blackColor]; CGSize size = [self.label sizeThatFits:CGSizeMake(self.label.frame.size.width, MAXFLOAT)]; self.label.frame = CGRectMake(self.label.frame.origin.x, self.label.frame.origin.y, self.label.frame.size.width, size.height); [self.view addSubview:self.label]; } 

但是运行后你会发现,什么也没有!打印label.frame--- label[18169:1891997] {{10, 100}, {100, 0}} 这是因为我们在initUI方法中并没有给label赋值,那么label的高度默认为0了,所以处理自适应的时候只能在赋值之后再进行自适应的操作。

第二个问题:如果我们有那种对齐的需求的话,如果文字比较少,那么可能会出现文字偏上的效果,这时候我们可以在自适应后,根据label高度判断,修改其高度。如下:

    self.titleL.text = model.cooperationInverseVO.ipDemandtitle;
    CGSize size = [self.titleL sizeThatFits:CGSizeMake(self.titleL.frame.size.width, MAXFLOAT)]; self.titleL.frame = CGRectMake(self.titleL.frame.origin.x, self.titleL.frame.origin.y, self.titleL.frame.size.width, size.height); self.titleL.textColor = [UIColor colorWithHexString:@"#666666"]; ///如果高度不足一行 强制为原来一行的高度 if (self.titleL.hb_height < cellHeight) { self.titleL.hb_height = cellHeight; }

 

转载于:https://www.cnblogs.com/Ewenblog/p/11323204.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值