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;
    }

 

posted @ 2019-08-08 19:19  给me一首歌的时间  阅读(84)  评论(0编辑  收藏  举报