lable 以及cell的高度自适应

1.先cell自适应

可以先拿到 这个lable里文字的高度

//lable自适应的高度
-(CGFloat)heightWithString:(NSString *)aString
{
    
    CGRect r = [aString boundingRectWithSize:CGSizeMake(self.tableView.frame.size.width - 28, 20000) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:FourT3GongNengZiHaoFont} context:nil];
    
    return r.size.height;
}

 在cell的高度返回方法里面调用方法

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
        return [ActiviteDetail2TwoCell cellHeight:[self heightWithString:_activityInfoNewModel.activityDes]];
  
}

 在cell里填写此cell需要的高度

+(CGFloat)cellHeight:(CGFloat)height
{
  
    return 72+height;
}

此时cell可以根据文字的高度 而适应高度了

那么cell里的lable的高度怎么设置??

正常在初始化里写正常的高度就可以

    self.detailLable.frame = CGRectMake(14, CGRectGetMaxY(self.titleLable.frame)+28+1, CurrentScreenWidth-28, 23);

 在cell里写一个改变这个detail的方法

//赋值 and 自动换行,计算出cell的高度
-(void)setDetailLableText:(NSString *)text
{
    //获得当前cell高度
    CGRect frame = [self frame];
    //文本赋值
    self.detailLable.text = text;
    //设置label的最大行数
    self.detailLable.numberOfLines = 10;
    CGSize size = CGSizeMake(CurrentScreenWidth-14-30-14, 1000);
    CGSize labelSize = [self.detailLable.text sizeWithFont:self.detailLable.font constrainedToSize:size lineBreakMode:NSLineBreakByClipping];
    self.detailLable.frame = CGRectMake(self.detailLable.frame.origin.x, self.detailLable.frame.origin.y, labelSize.width, labelSize.height);
    
    //计算出自适应的高度
    frame.size.height = labelSize.height;
    
    self.frame = frame;
}

 出来再cell的赋值里面调用这个方法

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{      ActiviteDetail2TwoCell *cellTwo = [tableView dequeueReusableCellWithIdentifier:@"ActiviteDetail2TwoCell" forIndexPath:indexPath];
         cellTwo.selectionStyle = UITableViewCellSelectionStyleNone;

       [cellTwo setDetailLableText:_activityInfoNewModel.activityDes];

}

 lable的行间距设置

 if (cellTwo.detailLable.text!=nil) { //这里要判断一下 改label不为空的时候  不判空 会蹦掉
                NSMutableAttributedString * attributedString1 = [[NSMutableAttributedString alloc] initWithString:cellTwo.detailLable.text];
                NSMutableParagraphStyle * paragraphStyle1 = [[NSMutableParagraphStyle alloc] init];
                [paragraphStyle1 setLineSpacing:3];
                [attributedString1 addAttribute:NSParagraphStyleAttributeName value:paragraphStyle1 range:NSMakeRange(0, [cellTwo.detailLable.text length])];
                [cellTwo.detailLable setAttributedText:attributedString1];
                [cellTwo.detailLable sizeToFit];
            }

 lable 根据宽度适应字体

titleLabel.adjustsFontSizeToFitWidth = YES;
原文地址:https://www.cnblogs.com/miaomiaocat/p/5455263.html