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 に答える