Управление UIImageView во время анимации с помощью CAKeyframeAnimation

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

У меня есть код ниже, который перемещается от A к B. Я также знаю, как вращать 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];

person Vad    schedule 31.08.2011    source источник


Ответы (2)


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

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

person Anomie    schedule 31.08.2011
comment
На самом деле мне предстоит пройти сложный путь. Для простоты я использую A и B. Вы упомянули CGAnimation, но я не инициализировал этот объект. Я буду исследовать, как это сделать. Спасибо - person Vad; 31.08.2011
comment
@Vad: я имел в виду CAAnimation, который является надклассом CAKeyframeAnimation. У Apple слишком много разных маленьких префиксов для своих классов. - person Anomie; 31.08.2011

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

-(void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag
person Nyx0uf    schedule 31.08.2011