Я использую анимацию вращения, созданную с помощью CABasicAnimation
. Он вращает UIView
в течение 2 секунд. Но мне нужно остановить его, когда коснется UIView
. Если я удалю анимацию, представление будет в том же положении, что и до начала анимации.Остановить CABasicAnimation в определенной точке
Вот мой код анимации:
float duration = 2.0;
float rotationAngle = rotationDirection * ang * speed * duration;
//rotationAngle = 3*(2*M_PI);//(double)rotationAngle % (double)(2*M_PI) ;
CABasicAnimation* rotationAnimation;
rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
rotationAnimation.toValue = [NSNumber numberWithFloat: rotationAngle ];
rotationAnimation.duration = duration;
rotationAnimation.cumulative = YES;
rotationAnimation.removedOnCompletion = NO;
rotationAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
rotationAnimation.fillMode = kCAFillModeForwards;
rotationAnimation.delegate = self;
[self.view.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];
Как я могу остановить вращение правильно их UIView
«s, где она есть, когда он прикоснулся? Я знаю, как управлять сенсорной частью, но я не могу понять, как остановить просмотр на текущем угле.
Я решил проблему, получив угол слоя презентации, удалив анимацию и установив преобразование вида. Вот код:
[self.view.layer removeAllAnimations];
CALayer* presentLayer = self.view.layer.presentationLayer;
float currentAngle = [(NSNumber *)[presentLayer valueForKeyPath:@"transform.rotation.z"] floatValue];
self.view.transform = CGAffineTransformMakeRotation(currentAngle);
где вы положили вышеуказанное решение ?? Я всегда получаю угол 0.0000 – Hisenberg