添加带有向上动画的部分/行

Posted

技术标签:

【中文标题】添加带有向上动画的部分/行【英文标题】:Adding section / rows with an upwards animation 【发布时间】:2017-03-23 21:17:41 【问题描述】:

向我的数据源添加项目时,我使用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

将新部分插入表格后,我应该怎么做才能使新部分向上动画?

【问题讨论】:

【参考方案1】:

没有找到简单的方法。也许你可以试试: 1.插入位置前截图 2.在插入位置之前覆盖零件 3. 更改 tableView 的框架以确保插入位置下方的部分在重新加载后不会移动 4.重新加载tableView 5. 为您的屏幕截图设置动画以向上移动以显示新部分

【讨论】:

以上是关于添加带有向上动画的部分/行的主要内容,如果未能解决你的问题,请参考以下文章

如何使用数组将带有数据的行添加到html表中,函数部分工作

如何在使用多个部分时为 tableView 单元格的删除/添加设置动画,而部分的数量可能会发生变化

Android - 带有动画的可扩展 TextView

键盘动画移动 UITableView 部分标题

向上滚动 uitablviewcell 部分可见

将部分和行添加到 UITableView 以重置表