CAKeyFrameAnimation retrasa antes de repetir

Tengo una image de bola que estoy animando alnetworkingedor de un path. La animation está configurada para que se repita para siempre, pero ¿por qué hay un retraso entre las repeticiones?

Aquí está mi código:

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); 

Prueba esto:

 [animation setCalculationMode:kCAAnimationPaced] 

No sé la respuesta real, pero estás haciendo muchas cosas innecesarias aquí, y mi sugerencia sería que comiences por eliminarlo. No hay necesidad del bloque CATransaction ( begin y commit ). No hay necesidad de setBeginTime: Definitivamente no hay necesidad de configurar removedOnCompletion y fillMode , ya que no se trata de una animation agrupada. Simplemente agregue la animation a la capa y retroceda. Comenzará de inmediato y se repetirá para siempre, y su código será más simple y mejor.

Debe replace kCAFillModeRemoved con kCAFillModeForwards o algún otro valor. Lea la documentation sobre por qué .

Adicionalmente:

Reemplazar:

 [arcAnimation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]] 

Con (dependiendo de su resultado de testing):

 [arcAnimation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]] 

o

 [arcAnimation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]]