2

我正在开发一个应用程序,其中我将视图旋转 360 度,但我无法将其旋转 360 度。它旋转了 180 度,旋转后又回到了原来的位置。

animation = [CABasicAnimation animationWithKeyPath:@"transform"];
transform = CATransform3DMakeRotation(3.14f, 1.0f, 1.0f, 1.0f);  
value = [NSValue valueWithCATransform3D:transform]; 
[animation setToValue:value];
[animation setAutoreverses:YES]; 
[animation setDuration:0.9];
[[rotatBall layer] addAnimation:animation forKey:@"180"];  //rotatBall is a view

换句话说,它正在来回旋转。如何连续旋转它......请帮助......

4

2 回答 2

1

这有点棘手,但您可以在docs中找到它。
要连续旋转它,您首先需要设置toValue然后将动画重复计数设置为HUGH_VALF(在 math.h 中定义)。

    CABasicAnimation* animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.x"];

    transform = CATransform3DMakeRotation(1.0f, 1.0f, 1.0f, 1.0f);  
    fromValue = [NSValue valueWithCATransform3D:transform];

    transform = CATransform3DMakeRotation(M_PI*2, 1.0f, 1.0f, 1.0f);  
    toValue = [NSValue valueWithCATransform3D:transform];

    animation.fromValue = fromValue;
    animation.toValue = toValue;
    animation.duration = 0.9f; 
    animation.repeatCount = HUGE_VALF;     // HUGE_VALF is defined in math.h so import it
    [rotatBall.layer addAnimation:animation forKey:@"rotation"];
于 2012-05-31T07:56:55.817 回答
-1

您的动画在完成后正在反转,因为您设置autoreversesYES. 就是autoreverses这样。

至于为什么你旋转180度而不是360度...... 360度是多少弧度?

于 2012-05-31T06:45:31.690 回答