分组表视图中的中间动画看起来很糟糕

Posted

技术标签:

【中文标题】分组表视图中的中间动画看起来很糟糕【英文标题】:Middle animation in grouped table view looks horrible 【发布时间】:2012-10-02 12:17:36 【问题描述】:

我找到了similar question,但没有答案(对不起,答案不起作用)。

所以我已经对表格进行了分组,我想为内容更新制作动画,而不是 [tableView reloadData]。 我通过使用这段代码来做到这一点:

// Data source already updated here, but reloadData wasn't called
[self.tableView beginUpdates];
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationMiddle];
[self.tableView endUpdates];

我上传了 2 个动画示例:

普通:http://cl.ly/3u1M3l1w3V3J(慢动作) 分组:http://cl.ly/1O3Z2M280n0z(慢动作)

如您所见,差异很大。 我根本没有改变我的代码,只是改变了故事板中的 tableView 样式。

难道没有其他方法可以继承 UITableView 和 UITableViewCell 并使用 CoreAnimation 实现我自己的动画吗?

【问题讨论】:

【参考方案1】:

在为表格的行设置动画时,不必使用 CoreAnimation 实现您自己的动画。

UITableView 支持比简单地重新加载一个部分更高级的动画,我建议你看看它们。

由于您正在改组视频中的行,因此您应该查看moveRowAtIndexPath:toIndexPath:(在 UITableView 上)。您将调用放在beginUpdatesendUpdates 中。

通过了解重新洗牌前后的顺序,您可以将所有行移动到新的位置,并让它们滑到正确的位置。

要弄清楚每一行应该去哪里需要一些思考,但这比滚动完全自定义的解决方案要容易得多。

【讨论】:

添加其他类型的动画不是问题。淡入淡出动画效果完美,但我们想要看起来有点像机场展示的“中间”动画。

以上是关于分组表视图中的中间动画看起来很糟糕的主要内容,如果未能解决你的问题,请参考以下文章

UITableView 单元格折叠动画看起来很糟糕

分组表视图,如 iphone 联系人

为分组表视图中的每个部分添加阴影

同步动画以在表格视图中的集合视图中滚动

覆盖 SwiftUI 视图的默认背景颜色?

auth系统与类视图