Iphone UICollectionView插入项->;调整动画时间?
因此,我有一个UICollectionView,可以在其中插入新项目 我使用了“使插入和删除动画更有趣”一节中的大部分建议 有没有办法调整动画时间?(也许我只是在文档中漏掉了它,但找不到任何关于它的信息)Iphone UICollectionView插入项->;调整动画时间?,iphone,ios,uikit,uicollectionview,Iphone,Ios,Uikit,Uicollectionview,因此,我有一个UICollectionView,可以在其中插入新项目 我使用了“使插入和删除动画更有趣”一节中的大部分建议 有没有办法调整动画时间?(也许我只是在文档中漏掉了它,但找不到任何关于它的信息) PS:如果我能编辑曲线,那也会很酷。你知道轻松进出等等。你不能用苹果提供的布局方法调整动画。如果要自定义动画,需要通过属性隐藏项目(仅显示并清空空间),请自己制作动画,并在动画结束时通过属性将项目弹出 我问了一个关于定制移动动画的类似问题,但一致的意见是我所描述的。如果需要的话,让自己充满活力
PS:如果我能编辑曲线,那也会很酷。你知道轻松进出等等。你不能用苹果提供的布局方法调整动画。如果要自定义动画,需要通过属性隐藏项目(仅显示并清空空间),请自己制作动画,并在动画结束时通过属性将项目弹出 我问了一个关于定制移动动画的类似问题,但一致的意见是我所描述的。如果需要的话,让自己充满活力
这个问题显示了如何进行自定义移除动画,自定义插入应该是类似的:您可以使用CALayer更改任何动画速度。因此,对于UICollectionView,如下所示:
[self.collectionView.viewForBaselineLayout.layer setSpeed:0.1f];
您可以更改回原始速度:
[self.collectionView.viewForBaselineLayout.layer setSpeed:1.0f];
为此,您可能需要导入QuartzCore:
#import <QuartzCore/QuartzCore.h>
#导入
或者直接做
[UIView animateWithDuration:0.5f animations:^(void) {
[self.collectionView insertItemsAtIndexPaths:@[newIndexPath]];
}];
动画持续时间将影响集合视图插入动画的内部持续时间。这是真的,而且很糟糕。不过,该单元是一个与其他视图类似的视图,因此您可以对其执行任何动画,只要最后单元格的位置和大小与布局属性的位置和大小匹配。@jrturton那么,如何防止设置新属性将触发的系统动画?显示/消失属性将与最终属性相同,因此不会发生动画。我只为自定义选择动画而不是插入做过(手动设置集合视图动画),所以这主要是猜测!太棒了,这正是我想要的。我不知道“viewForBaselineLayout”的图层是我需要编辑的。但老实说,这也会调整UiCollectionViewItems中的许多动画。像动画视图一样。然后必须调整这些动画的持续时间以保持速度。是的,这是一种黑客的方式,但很容易。也许你能找到一个更好的视角来设定速度。这只是一个快速的测试,效果很好。很有趣,但正如你所说的,很粗糙。这是一条路要走。您也可以在
-performBatchUpdates
上调用此功能,使用您想要的任何类型的动画块,它将在其中的任何更新中执行此功能!尽管公认的答案很聪明,但这是一种潜在副作用最小的解决方案。