在我的数据源中添加项目时,我使用tableView.reloadData()
并调整表格的contentOffset,使内容保持在同一位置,新添加的部分位于顶部(不一定是可见的)。
我用来执行此操作的代码如下所示:
// add item to data source
let height = tableView.contentSize.height
var offset = tableView.contentOffset
tableView.reloadData()
let newSet = CGPoint(x: offset.x, y: offset.y + tableView.contentSize.height - height)
tableView.contentOffset = newSet.y < 0 ? offset : newSet
这样可行,但没有动画。我想要实现的是在当前部分的顶部添加部分。如果新部分可见,则应向上移动。
如果我插入该部分而不是使用reloadData()
,则新部分下方的所有内容都将向下设置动画。
tableView.insertSections(IndexSet([1]), with: .automatic)
// All the content will move downwards even after setting the offset
在将新部分插入表格后,我应该怎么做才能将新部分向上设置动画?
答案 0 :(得分:1)
没有找到一个简单的方法。也许你可以试试:
1.在插入位置之前拍摄屏幕
2.在插入位置之前盖住零件
3.更改tableView的框架以确保插入位置下方的部件在重新加载后不会移动
4.重新加载tableView
5.动画屏幕截图以向上移动以显示新部分