2

次のコードが実行されるとすぐに「完了」をログに記録するのはなぜですか?

[UIView animateWithDuration:0.3 
                 animations:^{
                        NSLog(@"Start");
                 } 
                 completion:^(BOOL finished){
                     NSLog(@"done");
                 }
 ];
4

2 に答える 2

8

実際には何もアニメーション化していないためです (NSLog をアニメーション化することはできません)。オブジェクトをアニメーション化する必要があります。そうしないと、完了ブロックがすぐに呼び出されます。何もアニメーション化されていない場合、0.3 秒の長さは無視されます。

于 2012-06-06T18:42:47.680 に答える
3

何もアニメートしていないからです。アニメーションブロックの一部のUIViewの値を変更すると、0.3秒の遅延後に「done」が正しく出力されます。

私はあなたのコードを正確に使用して5秒の遅延でテストしましたが、確認のためにアニメーション化するものを追加するだけです。

于 2012-06-06T18:41:45.060 に答える