2011-08-09 10 views
3

についての質問私はこのコードを持っている: successviewが私の見解であり、それはアルファ0.00で始まるが、それはオートリバースでアニメーションを終了したときに、アルファ1.00となっsuccessview ...なぜ?IOS:アニメーション

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:2]; 
[UIView setAnimationRepeatAutoreverses:YES]; 
[successView setAlpha:1.00]; 
[UIView commitAnimations]; 

答えて

5

1つの方法は、2つの異なるアニメーションを行うことです。その後、1.0のアルファ値に向けて進行Oneと他のこれを達成するためにUIViewanimateWithDuration:animations:completion:メソッドを使用し、バック0

から1.0から行くこと。完了ブロックでその逆を行うことができます。線に沿って

何か:

[UIView animateWithDuration:0.2 
    animations:^{view.alpha = 1.0;} 
    completion:^(BOOL finished){ 

     [UIView animateWithDuration:0.2 
         animations:^{view.alpha = 0;}]; 

    }]; 

animationsの詳細についてはUIViewマニュアルを参照してください。

4

それはドキュメントにあります:

あなたは繰り返し回数(設定可能なsetAnimationRepeatCountを使用して:法)でautoreversing組み合わせた場合、あなたは前後に古い値と新しい値の間に指定された数をシフトするアニメーションを作成することができます回。ただし、繰り返し回数は完全なサイクル数を示します。 2.0などの整数を指定した場合、アニメーションは古い値で終了し、直後に新しい値が表示されます。新しい値(古い値ではなく)でアニメーションを終了したい場合は、繰り返し回数の値に0.5を加えます。これにより、アニメーションに余分な半サイクルが追加されます。

更新:は間違ってあなたのコードを読んで、しかしドキュメントは、あなたがiOS 4.0以降をターゲットにしている代わり場合は、animateWithDuration:delay:options:animations:completion:を使用することを示唆しています。

0

誰かが興味を持っている場合は、ここでスウィフトコードです:

UIView.animate(withDuration: 0.2, animations: { 
    view.alpha = 1 
}) { (finished) in 
     UIView.animate(withDuration: 0.2, animations: { 
      view.alpha = 0 
     }) 
} 
関連する問題