2

アルファと組み合わせた単純な回転変換があります。これは最初の呼び出しで完全に機能しますが、2回目は回転が発生しません(ユーザーが画面をタップしてこのアニメーションを開始します)。

これが私の基本的なアニメーション機能です:

- (void) animateMe:(UIImageView *)myImage delay:(NSTimeInterval)dly
{
    [UIView animateWithDuration:1.0 
                          delay:dly
                        options:UIViewAnimationOptionAutoreverse
                     animations:^(void){
                         myImage.alpha = 1.0;
                         myImage.transform = CGAffineTransformMakeRotation(180.0);
                     }
                     completion:^(BOOL finished) {
                         myImage.alpha = 0.0;
                  }];
}
4

1 に答える 1

7

問題は、2回目にビューを回転させたいときに、ビューがすでに180度回転していて、次の線が回転していることです。

myImage.transform = CGAffineTransformMakeRotation(180.0);

と同等です:

myImage.transform = myImage.transform;

したがって、次のようなことを行う必要があります。

myImage.transform = CGAffineTransformRotate(myImage.transform, 180.0);

ドキュメントには、回転角は度ではなくラジアンである必要があると記載されていることに注意してください。したがって、おそらくM_PIの代わりに使用する必要があり180.0ます。

また、ドキュメントには、と組み合わせるUIViewAnimationOptionAutoreverse 必要UIViewAnimationOptionRepeatがあると記載されていることに注意してください。

UIViewAnimationOptionAutoreverse

アニメーションを前後に実行します。UIViewAnimationOptionRepeatオプションと組み合わせる必要があります。

于 2012-04-14T18:45:37.670 に答える