从底部到UITableView布局的有趣解决方案

这里,我们设计了一个表格视图,该表格视图从下至上添加了单元格。

在研究StackOverflow https://stackoverflow.com/questions/28105905/how-to-populate-uitableview-from-the-bottom-upwards之后
我发现主要有两种解决方案:

1- 翻转UITableView翻转单元格 ,然后反转UITableView中每个单元格的顺序。

问题:

  • ScrollViewIndicator向左旋转。
  • 滑动删除操作将引起混乱。

2 —计算所有单元格,部分标题和部分页脚的总高度 ,然后设置UIEdgeInsetTop 将其向下推

问题:

  • 该解决方案很复杂,很难与Autolayout / UITableViewAutomaticDimension一起使用。

我提出了解决这些问题的解决方案:

  • 如您所知,使用自动布局设置多个UILabel可以根据字体大小,字符数等自动调整内容大小。

相同的解决方案可以应用于这种情况:

  • 首先,使用它来根据内容大小计算内部布局:
 类IntrinsicTableView:UITableView { 
 覆盖var contentSize:CGSize { 
  didSet { 
  self.invalidateIntrinsicContentSize() 
  } 
  } 
 覆盖var internalContentSize:CGSize { 
  self.layoutIfNeeded() 
 返回CGSize(width:UIViewNoIntrinsicMetric,height:contentSize.height) 
  } 
  } 
  • 设置UITableView左右左右的布局
  • 设置顶部布局> = 0,以便视图可以从顶部浮动到底部而不会溢出父视图
  tableView.snp.makeConstraints {(m)在 
  m.left.bottom.right.equalToSuperview() 
  m.top.greaterThanOrEqualToSuperview() 
  } 

结果:
底部的UITableView布局。
通过设置基本TableView或仅处理几行代码,即可轻松应用于任何地方。

使用此解决方案,无需计算页眉,页脚,单元格的高度,并且同时使TableViewCell上的Swipe正常运行。