Это сработало для меня, но я уверен, что кто-то скажет мне, что значение уже сохранено в ключе.
Когда я создал слой и назначил ему анимацию, я установил для анимации ключевое значение, связанное со слоем.
в этом примере layerCurrentAnimation - это CABasicAnimation, а myAnimatedLayer - это CALayer.
[myAnimatedLayer setValue:layersCurrentAnimation forKey:@"basicAnimation"]
тогда, если анимация должна была остановиться, я бы вытащил значение анимации из слоя и повторно запустил его
CABasicAnimation *thisAnimation = [myAnimatedLayer valueForKey:@"basicAnimation"];
[myAnimatedLayer addAnimation:thisAnimation forKey:nil];