美文网首页
TableView自适应高度

TableView自适应高度

作者: 1剑天下 | 来源:发表于2017-12-05 16:19 被阅读788次

    UITableView高度设置的方式大概是一下几种,这里会主要提到第三种estimatedRowHeight 自适应高度

    rowHeight方式

    UITableView询问高度的方式有两种
    一种是针对所有的Cell具有固定高度的情况

    self.mainTable.rowHeight = 88;
    

    另一种方式就是实现 UITableViewDelegate 中的针对每一个Cell进行单独设置

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
         return 88;
    }
    需要注意的是,实现了这个方法后,rowHeight 的设置将无效。所以,这个方法适用于具有多种 cell 高度的 UITableView。
    

    estimatedRowHeight

    我们知道,UITableView 是个 UIScrollView,就像平时使用 UIScrollView 一样,加载时指定 contentSize 后它才能根据自己的 bounds、contentInset、contentOffset 等属性共同决定是否可以滑动以及滚动条的长度。而 UITableView 在一开始并不知道自己会被填充多少内容,于是询问 data source 个数和创建 cell,同时询问 delegate 这些 cell 应该显示的高度,这就造成它在加载的时候浪费了多余的计算在屏幕外边的 cell 上

    种类不同的 cell,我们依然可以使用简单的 estimatedRowHeight 属性赋值,只要整体估算值接近就可以,比如大概有一半 cell 高度是 44, 一半 cell 高度是 88, 那就可以估算一个 66,基本符合预期。

    //给tablView添加着两句配合好约束就再也不用计算高度了
    self.mianTableView.estimatedRowHeight = 213;
    self.mianTableView.rowHeight = UITableViewAutomaticDimension;
    
    

    注意问题

    1. 当lable高度不确定的时候约束的设置,需要设置一个最低高度,当然lines也要设置为0
      image.png
      2.当Cell上需要用到一个自定义的空间时,需要手动在.m里面添加这个控件该如何设置约束
      解决这个的方式类似于lable的,首先在Cell里面添加一个BottomView为这个控件占好位置,设置好这个Bottomview的上下左右以及最小高度
      image.png
      然后在cell.m里面手动创建这个控件添加到这个BottomView上,通过代码手动设置这个控件的约束,将这个BootomVIew给撑开
      image.png
      结果:
      image.png

    相关文章

      网友评论

          本文标题:TableView自适应高度

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