1

次のようなコードが少しあります。

//up till now someButton's alpha was 1
someButton.alpha = 0;
[UIView animateWithDuration:.25
                      delay:0.0
                    options:kMaskEaseOut
                 animations:^ {
                     someButton.alpha = 1;
                 }
                 completion:^ (BOOL finished){}];

問題は、アニメーションが始まる前に someButton のアルファが 0 に設定されていないことです。つまり、視覚的に何も起こりません。ここで、アニメーション ブロック全体をコメント アウトすると、実際に someButton のアルファが 0 に設定されます。また、これを行うと:

    [UIView animateWithDuration:0
                      delay:0.0
                    options:kMaskEaseOut
                 animations:^ {
                     someButton.alpha = 0;
                 } completion:^ (BOOL finished){
                     [UIView animateWithDuration:.25
                                           delay:0.0
                                         options:kMaskEaseOut
                                      animations:^ {
                                          someButton.alpha = 1;
                                      }
                                      completion:^ (BOOL finished){}];
                 }];

それはうまくいきます(長さ0のアニメーションの後にアニメーションを開始します)。これはちょっとばかげています。

4

2 に答える 2

0

おそらく、 をゼロに設定するのにかかる時間alphaが非常に短いため、それを見ることができないためです (これは単なるコード行です - 瞬間的に発生し、他のコード行と同じくらい速く実行されます)。しかし、その瞬間から、アルファを 1 に戻すのに 0.25 秒かかります。それがおそらく、アルファ設定を 0 に設定するアニメーションが表示されない理由ですが、1 に戻るのを見ることができます。同じ説明が 2 番目のコード サンプルにも当てはまります。 .

于 2012-09-12T21:32:27.553 に答える
0

this、特にセクションを確認してくださいAnimations(あなたのものと似た例があります: hideShowView)。この 2 つのコードの動作の違いの理由は、すぐに実行される別のスレッドでアニメーションが発生しているためです。

 //up till now someButton's alpha was 1
 someButton.alpha = 0;
 [UIView animateWithDuration:.25
                          delay:0.0
                        options:kMaskEaseOut
                     animations:^ {
                         someButton.alpha = 1;
                     }
                     completion:^ (BOOL finished){}];
 NSLog(@"%d", someButton.alpha); // will display 1 not 0

アニメーションをコメントアウトしたくない場合は、アニメーションを少し遅らせることができると思います (2 番目のコード ソースで遅延が 0 のアニメーション)。

于 2012-09-12T23:36:03.100 に答える