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]