0

我正在尝试旋转 CALayer,首先我将它旋转 -30 度,所以它向左转。

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
self.transform = CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(-30));
[UIView commitAnimations];

现在我希望它完成旋转,从左开始再旋转一次,但它采用最短路径。

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
self.transform = CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(-30));
[UIView commitAnimations];

我怎样才能强制它的旋转方向?

4

1 回答 1

3

您可以使用 aCABasicAnimation旋转到特定角度。

CABasicAnimation *rotate = 
    [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
rotate.toValue = @(M_PI*2); 
rotate.duration = 1.0; // your duration

[yourView.layer addAnimation:rotate 
                      forKey:@"myRotationAnimation"];

您可以使用更多参数来配置动画的外观(例如计时功能)。

默认情况下,动画将在完成后自行删除,因此您应该更新到最终值(这已在所有“我如何旋转...”问题中反复解释。

此外,您需要QuartzCore.framework核心动画(本例中为 CALayer 和 CABasicAnimation)

于 2013-04-28T07:45:13.030 回答