У меня есть такой:
CALayer *layer = stripeButton.layer;
CAKeyframeAnimation *moveAnim = [CAKeyframeAnimation animationWithKeyPath:@"bounds.origin.y"];
moveAnim.duration = 3.35;
moveAnim.repeatCount = 0;
moveAnim.autoreverses = NO;
moveAnim.removedOnCompletion = NO;
moveAnim.calculationMode = kCAAnimationLinear;
moveAnim.fillMode = kCAFillModeForwards;
// ... keys and values here ...
[theLayer addAnimation:moveAnim forKey:@"theAnimation"];
Вы видите, что эта анимация идет 3,35 секунды. Между тем может случиться, что через 2 секунды будет запущена новая анимация с тем же ключом @ "theAnimation" для разных значений.
Проблема с тем, что происходит: новая анимация не улавливает текущее видимое состояние. Начинается тяжело с нуля. Вид переходит в начальную позицию в ужасной манере, и оттуда начинается новая анимация. Для UIView есть setAnimationsBeginFromCurrentState = YES, но я не нашел ничего подобного для CAKeyFrameAnimation. Есть идеи?