UILabel根据文字计算高度在UItableview中的应用

来源:互联网 发布:arm数组累加 编辑:程序博客网 时间:2024/06/01 10:11

UILabel根据文字自动换行主要用到如下函数:

CGSize titleSize = [titleContentboundingRectWithSize:CGSizeMake(self.bounds.size.width,MAXFLOAT) options:NSStringDrawingUsesLineFragmentOriginattributes:@{NSFontAttributeName:[UIFontsystemFontOfSize:14]}context:nil].size;


具体代码如下:

-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{

    self = [superinitWithStyle:style reuseIdentifier:reuseIdentifier];

    if(self){

        _titleLabel = [[UILabelalloc]init];

        _titleLabel.font = [UIFontsystemFontOfSize:14];

        NSString *titleContent =@"亲,欢迎您通过以下方式与我们的营销顾问取得联系,交流您再营销推广工作中遇到的问题,营销顾问将免费为您提供咨询服务。";

        _titleLabel.text = titleContent;

        _titleLabel.numberOfLines =0;//多行显示,计算高度

        _titleLabel.textColor = [UIColorlightGrayColor];

//计算高度

        CGSize titleSize = [titleContentboundingRectWithSize:CGSizeMake(self.bounds.size.width,MAXFLOAT) options:NSStringDrawingUsesLineFragmentOriginattributes:@{NSFontAttributeName:[UIFontsystemFontOfSize:14]}context:nil].size;

        [_titleLabelsetFrame:CGRectMake(0,0,titleSize.width, titleSize.height)];

        [selfaddSubview:_titleLabel];

        

        _label = [[UILabelalloc]initWithFrame:CGRectMake(0,_titleLabel.bounds.size.height,self.bounds.size.width,30)];

        _label.text =@"test";

        [selfaddSubview:_label];

        

    }

    returnself;

}

在UITableView中高度代码如下:

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{

    CusCell *cell = (CusCell *)[selftableView:tableView cellForRowAtIndexPath:indexPath];

    return cell.titleLabel.bounds.size.height+cell.label.bounds.size.height;

}


主要Demo链接如下:

https://github.com/IOSWorkSpace/Wordwrap/tree/master

0 0