美文网首页已解决
根据label的不同高度,cell自适应

根据label的不同高度,cell自适应

作者: paradisery | 来源:发表于2018-08-07 11:08 被阅读61次

    1、cell用CGRectMake布局:需要sizeThatFits这个方法。

    -(CGSize)sizeThatFits:(CGSize)size{
         CGFloat totalHeight = 5;
        totalHeight +=[self.user_name_lable sizeThatFits:size].height;
        totalHeight +=[self.comment_content_lable sizeThatFits:size].height;
        totalHeight +=[self.comment_time_lable sizeThatFits:size].height;
        
        return CGSizeMake(size.width, totalHeight);
    }
    

    cell里代码写UI,写了三个label,其中comment_content_label需要设置

        _comment_content_lable.numberOfLines=0;
        [_comment_content_lable sizeToFit];
    

    以上的设置,就是告诉cell三个控件的高度。

    如果使用masonry布局,sizeThatFits也不用写直接这样:

    [_comment_content_lable mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.offset(10);
            make.left.offset(10);
            make.right.offset(-10);
            make.bottom.offset(-10);
        }] ;
    

    在tableview只需写入两行代码,

             _tableView.estimatedRowHeight = 0.5 * kScreenWidth;
            _tableView.rowHeight = UITableViewAutomaticDimension;
    

    第一行是告诉tableview大概宽度,第二行就是自适配。

    2、cell用xib搭建

    用xib加约束和用masonry加代码约束都是可以的。注意约束一定要自上而下加好,让系统知道怎么去计算高度。


    DE878418-5775-4990-9FA2-360DC704B312.png

    中间的label约束高度设置大于等于,cell内部的控件约束一定从上到下都设置好。
    tableview里设置还是那两行

             _tableView.estimatedRowHeight = 0.5 * kScreenWidth;
            _tableView.rowHeight = UITableViewAutomaticDimension;
    

    这样不论是xib的cell还是代码布局,cell都可以自动化适配。不在需要计算回传到代理去从新适配。

    相关文章

      网友评论

        本文标题:根据label的不同高度,cell自适应

        本文链接:https://www.haomeiwen.com/subject/ocdovftx.html