Цель c - вращать колесо, используя радианы - PullRequest
1 голос
/ 16 сентября 2010

Я пытаюсь сделать круговое изображение, которое вращается, когда пользователь перетаскивает колесо.

Это мой код:

CABasicAnimation *rotationAnimation;
rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
rotationAnimation.toValue = [NSNumber numberWithFloat:angleRadians];
rotationAnimation.duration = 10;
rotationAnimation.cumulative = YES;
rotationAnimation.repeatCount = 1.0;
rotationAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
[self.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];

Однако основная проблема, с которой я сталкиваюсь, это изображениесбрасывается после завершения.

Любая помощь, пожалуйста?

1 Ответ

4 голосов
/ 17 сентября 2010

Я думаю, что вы подходите к этой проблеме неправильно.Базовая анимация в первую очередь предназначена для анимации временных эффектов, таких как переходы вида, затухание и т. Д. После анимации слоя CA отбрасывает свои рабочие значения и восстанавливает исходное состояние слоя, поэтому ваше изображение сбрасывается.Хотя, без сомнения, с CA можно делать то, что вы хотите, но я думаю, что это трудный путь.

Чтобы изображение отслеживало палец пользователя, я бы посоветовал просто рассчитать угол, который вы хотите от текущей позиции касания, и преобразовывать изображение под этот угол при каждом изменении позиции касания: -

- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
  double angle = /* calculate your angle in radians here */;
  imageView.transform = CGAffineTransformMakeRotation( angle );
}
...