Я пытаюсь сделать это: есть вид, который уже повернут к некоторому значению, скажем, на 15 градусов.
Представьте себе вид, повернутый на 15 градусов.
Далее, я только знаю, что я хочу, чтобы это представление вращалось от его текущего вращения до 40 градусов.
Представьте, как этот вид теперь поворачивается от 15 до 40 градусов.
Для практики я хочу сделать это с CAKeyFrameAnimation. Но дело в том, что все, что я могу сделать, это жестко указать, откуда и куда. Там нет удобной вещи "забрать текущее состояние", как UIView анимации, верно? Как бы я пошел об этом?
Кроме того, я хочу всегда указывать 3 ключевых кадра для этого вращения, независимо от того, сколько требуется количество вращения.
Представьте, как этот вид поворачивается от 15 до 40 градусов, используя для этого 3 ключевых кадра
Но есть еще одна большая проблема: может случиться так, что другая анимация столкнется с другой целью. Допустим, в данный момент вид вращается от 20 до 100 градусов, и где-то между анимацией запускается новая анимация, и он хочет, чтобы этот вид достиг 15 градусов. С анимацией UIView это просто. Как это сделать с CAKeyFrameAnimation?
В основном я хочу, чтобы он вел себя как анимация UIView, которая подхватывает текущее состояние;)
CALayer* theLayer = rotatedView.layer;
CAKeyframeAnimation* animation;
animation = [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation.z"];
animation.duration = 2;
animation.repeatCount = 1;
animation.removedOnCompletion = NO;
animation.fillMode = kCAFillModeForwards;
animation.values = [NSArray arrayWithObjects:
[NSNumber numberWithFloat:(10.0 / 180.0) * M_PI],
[NSNumber numberWithFloat:(20.0 / 180.0) * M_PI],
[NSNumber numberWithFloat:(30.0 / 180.0) * M_PI], nil];
[theLayer addAnimation:animation forKey:@"transform.rotation.z"];