强制顺时针/逆时针旋转UIImageView的CABasicAnimation

Smi*_*key 8 iphone core-animation core-graphics objective-c rotation

我正在制作一个钟摆,它从0度摆动到最大200度,然后再回来.问题是,如果钟摆超过180度,它将通过最短路径返回到0,顺时针方向继续.而且我希望它逆时针走.这是我的代码:('right'是一个布尔值,当钟摆从左向右摆动时为TRUE)

 - (void)swingPendulum {
    CABasicAnimation *rotationAnimation;
    rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
    if (right) 
        rotationAnimation.toValue = [NSNumber numberWithFloat:degreesToRadians(kMax)];
    else
        rotationAnimation.toValue = [NSNumber numberWithFloat:degreesToRadians(kMin)];                               
    rotationAnimation.duration = 1.0;
    rotationAnimation.repeatCount = 1.0; 
    rotationAnimation.delegate = self;
    rotationAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
    rotationAnimation.removedOnCompletion = NO;

    [pendulum.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];
}
Run Code Online (Sandbox Code Playgroud)

我有什么想法可以使这项工作?这是我的摇摆仪拼图的最后一块,否则它很棒:D谢谢!

迈克尔

Lil*_*ilz 8

为了让它逆时针走,只需x在你想要的地方设置一个负值(加前面)

rotationAnimation.toValue = [NSNumber numberWithFloat:degreesToRadians(x)];
Run Code Online (Sandbox Code Playgroud)

  • AAAAH,如果我将它设置为 -380 之类的值,它会起作用。我不太确定为什么,但我刚刚添加了一个条件,根据初始摆动是否超过 180 度来切换 toValue。感谢所有的帮助! (2认同)