Вы можете установить ивар, например:
BOOL _animationRunning;
и установите делегатом для вашей анимации тот класс, в котором вы находитесь, и реализуйте функции:
animationDidStart:(CAAnimation *)anim
animationDidStop:(CAAnimation *)anim finished:(BOOL)flag
и переверните логическое значение внутри этих обратных вызовов.
Метод Оле также работает, но если вы установите для свойства beginTime задержку или оберните анимацию в CAAnimationGroup, чтобы создать задержку (например, задержка CAKeyframeAnimation перед повторением ), тогда у вас есть animationForKey, который также вернет, что анимация, хотя на самом деле она не «оживляет».