2012-04-14 16 views
2

私は、最初の呼び出しで完全に機能するアルファと組み合わせた単純な回転変換を持っていますが、回転は2回目に起こりません(ユーザーは画面をタップしてこのアニメーションを開始します)。ここでiOS5 CGAffineTransformMakeRotationは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; 
        }]; 
} 

答えて

7

問題は、ビューを回転する2番目の時間が、それはすでに180度線で回転させていることである。

myImage.transform = CGAffineTransformMakeRotation(180.0); 

myImage.transform = myImage.transform; 

のようにする必要があります。 documentationは、回転角がラジアンない程度にする必要があることを述べていることを
myImage.transform = CGAffineTransformRotate(myImage.transform, 180.0); 

注意。したがって、おそらく180.0の代わりにM_PIを使用する必要があります。

また、documentationUIViewAnimationOptionAutoreverseUIViewAnimationOptionRepeatと組み合わせなければならないと言うことに注意してください。

UIViewAnimationOptionAutoreverse

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

+0

ありがとう、それは非常に役に立ちます!私はあなたの提案を試してみましょう、それがうまくいけば、あなたがそのことについて正しいかもしれないように聞こえます。彼らがラジアンを使用することには非常に驚いています - それを行うのは厄介な方法のようですが、私はそれがドキュメンテーションが言っていることを見ています。 –

+0

私は、CGAffineTransformRotate()がCGAffineTransformMakeRotation()とは別の機能であることに気付きました。あなたの提案はうまくいきます、ありがとう。あなたのリンクはとても役に立ちました。アフィン変換について多くのことを学んでいます。 –

+0

もう1つのコメントがあります。私はブロックアニメーションのドキュメントを読んでおり、UIViewAnimationOptionAutoReverseと組み合わせて繰り返し回数を指定できると言います。UIViewAnimationAutoRepeatと組み合わせる必要はありません。 –

関連する問題