我有一个UICollectionView
在屏幕上被格式化为单个、水平滚动的行。它代表队列中的下一个条目,因此每当添加和删除项目时,它总是发生在索引 0(视图的最左侧),然后整个事物向前或向后移动一个空格。它在代码中非常简单,只是:
[_collectionviewNextUp insertItemsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:0 inSection:0]]];
和
[_collectionviewNextUp deleteItemsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:0 inSection:0]]];
一切正常,除了 和 的动画insertItemsAtIndexPaths:
,deleteItemsAtIndexPaths:
特别是当 CollectionView 项目超出屏幕边缘时。只要队列中只有 6 个项目(一次可以看到的数量),它就可以完美地动画;但是 7 个或更多项目,动画变得很奇怪。删除一个项目(从左边开始),它也会动画一个被添加到右边的项目;添加一个项目(在左侧),它还会为从右侧删除的项目设置动画。即使队列有 50 个项目长,它总是会动画项目 #6(屏幕上最后一个可见的项目)消失和重新出现。没有错误或警告或任何东西,动画结束后,我在视图中留下了正确数量的项目,它只是为在屏幕边缘添加/删除的单元格设置动画。
我的理论是可重复使用的细胞正在被动画化。这听起来像是一件事吗?左右滚动效果很好,但插入和删除似乎只是成对动画,而且它们总是朝同一个方向“飞入”和“飞出”,就好像一个正在取代另一个位置。它看起来(在我没有经验的眼中)就像最后的单元格被飞过并添加到前面,或者前面的单元格被移动到最后。
我试图对此进行研究,但我能找到的只是引发错误和异常的动画问题,而我的却没有。有没有其他人经历过这个?任何人都可以提供一个修复,其中索引 0 项目得到动画,其余的只是平滑地滑入和滑出屏幕?