CALayer按方向旋转

时间:2013-04-28 06:57:19

标签: ios calayer uiviewanimation cgaffinetransform

我正在尝试旋转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];

如何强制旋转方向?

1 个答案:

答案 0 :(得分:3)

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

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)