Можно ли воспроизвести путь назад в CAKeyFrameAnimation? - PullRequest
17 голосов
/ 04 апреля 2009

Я хочу анимировать позицию CALayer на основе CGPath, но я хочу воспроизвести ее задом наперед.

Есть ли способ оживить путь в обратном направлении или изменить CGPath?

Ответы [ 2 ]

30 голосов
/ 15 января 2010
animation.speed = -1;

4 голосов
/ 15 января 2010

Возможно, это не лучшее решение, но оно сработало для меня. Я сказал анимации об автореверсе, затем запустил ее на полпути. Но чтобы не дать анимации вернуться обратно, мне нужно было прервать ее раньше.

- (void) animate {
    CAKeyframeAnimation * pathAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
    pathAnimation.path = path;
    pathAnimation.duration = 15.0;
    pathAnimation.calculationMode = kCAAnimationPaced;
    pathAnimation.timeOffset = pathAnimation.duration;
    pathAnimation.autoreverses = YES;

    NSString * key = @"pathAnimation";
    [animatedView.layer addAnimation:pathAnimation forKey:key];
    [NSTimer scheduledTimerWithTimeInterval:pathAnimation.duration target:self selector:@selector(endAnimation:) userInfo:key repeats:NO];
}

- (void) endAnimation:(NSTimer *)timer {
    [animatedView.layer removeAnimationForKey:timer.userInfo];
}

Если есть лучшие способы, я хотел бы знать.

...