从底部到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正常运行。