Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UICollectionView插入项->;调整动画时间?_Iphone_Ios_Uikit_Uicollectionview - Fatal编程技术网

Iphone UICollectionView插入项->;调整动画时间?

Iphone UICollectionView插入项->;调整动画时间?,iphone,ios,uikit,uicollectionview,Iphone,Ios,Uikit,Uicollectionview,因此,我有一个UICollectionView,可以在其中插入新项目 我使用了“使插入和删除动画更有趣”一节中的大部分建议 有没有办法调整动画时间?(也许我只是在文档中漏掉了它,但找不到任何关于它的信息) PS:如果我能编辑曲线,那也会很酷。你知道轻松进出等等。你不能用苹果提供的布局方法调整动画。如果要自定义动画,需要通过属性隐藏项目(仅显示并清空空间),请自己制作动画,并在动画结束时通过属性将项目弹出 我问了一个关于定制移动动画的类似问题,但一致的意见是我所描述的。如果需要的话,让自己充满活力

因此,我有一个UICollectionView,可以在其中插入新项目

我使用了“使插入和删除动画更有趣”一节中的大部分建议

有没有办法调整动画时间?(也许我只是在文档中漏掉了它,但找不到任何关于它的信息)


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
上调用此功能,使用您想要的任何类型的动画块,它将在其中的任何更新中执行此功能!尽管公认的答案很聪明,但这是一种潜在副作用最小的解决方案。