Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.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
Ios 重复之前的关键帧显示延迟_Ios_Animation_Delay_Geometry_Cakeyframeanimation - Fatal编程技术网

Ios 重复之前的关键帧显示延迟

Ios 重复之前的关键帧显示延迟,ios,animation,delay,geometry,cakeyframeanimation,Ios,Animation,Delay,Geometry,Cakeyframeanimation,我有一个球的形象,我周围的路径动画。动画设置为永远重复,但为什么重复之间会有延迟 这是我的密码: CGPathRef aPath; aPath = CGPathCreateWithEllipseInRect(CGRectMake(0, 0, SIZE, SIZE), NULL); [CATransaction begin]; arcAnimation = [CAKeyframeAnimation animationWithKeyPath: @"position"]; [arcAnimatio

我有一个球的形象,我周围的路径动画。动画设置为永远重复,但为什么重复之间会有延迟

这是我的密码:

CGPathRef aPath;
aPath = CGPathCreateWithEllipseInRect(CGRectMake(0, 0, SIZE, SIZE), NULL);

[CATransaction begin];

arcAnimation = [CAKeyframeAnimation animationWithKeyPath: @"position"];
[arcAnimation setBeginTime:CACurrentMediaTime()];
[arcAnimation setDuration: 1.5];
[arcAnimation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]];
[arcAnimation setAutoreverses: NO];
[arcAnimation setRepeatCount:HUGE_VALF];
arcAnimation.removedOnCompletion = NO;
arcAnimation.fillMode = kCAFillModeRemoved;
[arcAnimation setPath: aPath];
[ball.layer addAnimation: arcAnimation forKey: @"position"];
[CATransaction commit];
CFRelease(aPath);

必须将
kCAFillModeRemoved
替换为
kCAFillModeForwards
或其他值。阅读文档

此外:

替换:

[arcAnimation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]]
使用(取决于您的测试结果):


我不知道实际的答案,但是你在这里做了很多不必要的事情,我的建议是你从移除它开始。不需要CATransaction块(
begin
commit
)。无需为
设置时间:
。绝对不需要设置
removedOnCompletion
fillMode
,因为这不是分组动画。只需将动画添加到层中,然后后退。它将立即启动,并将永远重复,您的代码将更简单、更好。

尝试以下方法:

[animation setCalculationMode:kCAAnimationPaced]

Nirav,我绝对不想随便进出。我希望动画在圆中以恒定速度运行,而不加速或减速。我尝试了所有不同的填充模式,没有一种对动画有任何明显的影响。动画在结束时仍然会暂停片刻,然后再开始。然后我认为是setBeginTime调用创建了这个东西。由于您对它进行了调用,因此需要一些时间来评估它应该启动的第二次,这就是延迟的原因。试着移除它,我已经移除了。仍然表现完全一样。花了一个小时试图弄明白这一点…为什么这不是默认值?!
[arcAnimation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]]
[animation setCalculationMode:kCAAnimationPaced]