Управление UIImageView во время анимации с помощью CAKeyframeAnimation - PullRequest
0 голосов
/ 31 августа 2011

Мне нужно переместить объект (UIImageView) из точки A в точку B, затем повернуть изображение в точке B на 180 градусов, чтобы повернуть его в противоположном направлении, и переместить объект из B в A (назад).

Iесть код ниже, который перемещается из А в Б. Я также знаю, как вращать UIImageView.Но как узнать, когда объект достиг точки B, и как применить действие поворота, учитывая, что на экране много объектов?

CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimation    animationWithKeyPath:@"position"];
pathAnimation.duration = speed;
pathAnimation.calculationMode = kCAAnimationPaced;
pathAnimation.fillMode = kCAFillModeForwards;
pathAnimation.removedOnCompletion = NO; 
CGMutablePathRef pointPath = CGPathCreateMutable();
CGPathMoveToPoint(pointPath, NULL, rect.origin.x, rect.origin.y);
CGPathAddLineToPoint(pointPath, NULL, x, y);
pathAnimation.path = pointPath;
CGPathRelease(pointPath);   
[imageView.layer addAnimation:pathAnimation forKey:[NSString    stringWithFormat:@"pathAnimation%@",objId]];
[imageView release];

Ответы [ 2 ]

1 голос
/ 31 августа 2011

Установите делегата для объекта CAAnimation, а в делегате реализуйте метод animationDidStop:finished:.

OTOH, анимация, которую вы описали, звучит так, как будто это можно сделать достаточно легко с поддержкой анимации UIView. См. Анимация просмотров с помощью блоков , если вы нацеливаетесь на 4.0 и выше, или Анимация просмотров , если вы все еще нацеливаетесь на более ранние версии.

1 голос
/ 31 августа 2011

Вы можете использовать метод делегата CAAnimation

-(void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag
...