I set the animation as follows:
CABasicAnimation *noteAnimation = [CABasicAnimation animation]; noteAnimation.keyPath = @"position.x"; noteAnimation.byValue = [NSNumber numberWithFloat:CGRectGetWidth(self.view.frame) - 50]; noteAnimation.duration = 1.f; noteAnimation.fillMode = kCAFillModeBoth; noteAnimation.removedOnCompletion = NO; noteAnimation.autoreverses = YES; noteAnimation.repeatCount = HUGE; noteAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; [self.greenSquareView.layer addAnimation:noteAnimation forKey:@"noteAnimation"]; To pause the live animation, I use:
CFTimeInterval pausedTime = [view.layer convertTime:CACurrentMediaTime() fromLayer:nil]; view.layer.speed = 0.0; view.layer.timeOffset = pausedTime; But in this case, the stop happens with a jerk

Full project code: BitBucket