Ios 当collectionview重新加载数据时,如何自定义UICollectionView转换动画?

Ios 当collectionview重新加载数据时,如何自定义UICollectionView转换动画?,ios,uicollectionview,Ios,Uicollectionview,我有一个UICollectionView,它有12个单元格。从网络检索数据后,调用UICollectionView的-reloadData并显示另外12个图像。 我的问题是:当UICollectionView重新加载数据时,我是否可以添加动画,比如从重新加载数据之前的旧图像到重新加载数据之后的新图像的过渡动画 任何建议都会大有帮助!谢谢 有三种方式: 集合视图提供的正常动画: [self.collectionView重新加载节:[NSIndexSet IndexetWithindexInsRan

我有一个UICollectionView,它有12个单元格。从网络检索数据后,调用UICollectionView的-reloadData并显示另外12个图像。 我的问题是:当UICollectionView重新加载数据时,我是否可以添加动画,比如从重新加载数据之前的旧图像到重新加载数据之后的新图像的过渡动画

任何建议都会大有帮助!谢谢

有三种方式:

集合视图提供的正常动画: [self.collectionView重新加载节:[NSIndexSet IndexetWithindexInsRange:NSMakeRange(0,self.collectionView.numberOfSections)]

(有关此主题的更多讨论,请参见此处:)

但是你也可以使用iOS中的屏幕截图API来获取一些视图副本,至少是当前可见的视图副本,并以任何你喜欢的方式为它们设置动画

要获取集合视图的当前可见单元格,可以调用:

[collectionView visibleCells]
然后,您可以为其中每一项创建快照视图:

UIView* singleCellSnapshot = [cell snapshotViewAfterScreenUpdates:NO];
现在,以任何你喜欢的方式为它们制作动画

不过,您应该为这些动画创建“superview”,您可以将快照添加为子视图。此外,请确保在启动动画时将单元的位置坐标转换为初始设置的快照:

UIView* animationContainer = [[UIView alloc] init... ]; //probably already done in  storyboard!

singleCellSnapshot.center = [cell.superview convertPoint:cell.center toView:animationContainer];

[animationContainer addSubview:singleCellSnapshot];

非常感谢,我以后会尝试这些方法^_^嗨,尼尔斯·齐恩!我尝试了第一个,in-performBatchUpdates:I call-reloadSections:,它在collectionView重新加载数据时真的很活跃。但是,动画不是我想要的。我想定制动画,那我该怎么做呢?这就是为什么我给你第二部分。如果你想要一个自定义动画,你必须编写它。。