0

我正在尝试通过顺时针旋转来为我的图像设置动画,然后缩小。到目前为止,它只是逆时针方向。我已经为沿 Z 旋转的值/键路径尝试了正值和负值,但它没有改变。

[window addSubview:splashView];
    [window bringSubviewToFront:splashView];
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:2.0];

    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(startupAnimationDone:finished:context:)];
    splashView.frame = CGRectMake(160, 284, 0, 0);
    [splashView.layer setValue:[NSNumber numberWithInt:-360]
                       forKeyPath:@"transform.rotation.z"];

    [UIView commitAnimations];
4

3 回答 3

1

或者直接使用 M_PI。

  • M_PI_4= 45度
  • M_PI_2= 90 度
  • M_PI= 180 度
  • M_PI*2= 360 度

您还可以更轻松地设置转换。

// set transform
splashView.layer.transform = CATransform3DMakeRotation(-M_PI*2, 0, 0, 1);

代替

[splashView.layer setValue:[NSNumber numberWithInt:-360] 
                forKeyPath:@"transform.rotation.z"];
于 2013-03-15T16:48:03.583 回答
1

在特定方向旋转超过 360°,请使用CAKeyframeAnimation. 在那里,您不仅可以设置最终值,还可以设置一些中间值

// consider this to be pseudo code
keyFrameAnimation.values = @[ 90, 180, 270, 360, 450, 540, ... ];

我没有任何代码可以给你看,但这绝对是这样做的方法。

于 2013-03-15T16:58:55.260 回答
0

那是因为当动画需要弧度时,您正在将度数传递给动画。这是如何进行转换的示例。

float degrees = 90.0f;
float radians = degrees * (180.0f / M_PI);
于 2013-03-15T16:43:38.337 回答