Как получить поворот, чтобы продолжить вращение после завершения состояния? - PullRequest
1 голос
/ 30 января 2011

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

Любое понимание или предложения будут оценены.

Спасибо.

if([(UIRotationGestureRecognizer*)recognizer state] == UIGestureRecognizerStateEnded) 
{
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:6.55];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
    recognizer.view.transform = CGAffineTransformRotate(recognizer.view.transform, 1000000000);
    [UIView commitAnimations];
}

1 Ответ

4 голосов
/ 30 января 2011

Возможно, вы захотите использовать CABasicAnimation

- (void)rotate {

[CATransaction begin];
[CATransaction setValue:[NSNumber numberWithFloat:2.0] forKey:kCATransactionAnimationDuration];

CABasicAnimation *animation;
animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
animation.fromValue = [NSNumber numberWithFloat:0.0];
animation.toValue = [NSNumber numberWithFloat:2 * M_PI];
animation.timingFunction = [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionLinear];
animation.delegate = self;
[recognizer.layer addAnimation:animation forKey:@"rotationAnimation"];

[CATransaction commit];
}

- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)finished {
if (finished) 
    [self rotate];  
}

. Это приведет к продолжению вращения до тех пор, пока вы не укажете удаление анимации.

Дополнительные сведения и параметры доступны в CABasicAnimation Ссылка на класс

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...