CAAnimationの終了後に完了ブロックを実行しようとしています。しかし、アニメーションブロックがアニメーションが完了する前に呼び出されたようです。しかし、アニメーションはまだ正しく発生します。CATransactionの完了がすぐに呼び出される
[CATransaction begin];
[self.view.layer addAnimation:self.dropAndBounceAnimation forKey:@"appearance"];
[CATransaction setCompletionBlock:completionBlock];
[CATransaction commit];
dropAndBounceAnimationは、position.yのCAKeyFrameAnimationであり、固定期間があります。
はいそれは[ドキュメント]の通りである(https://developer.apple.com/library/ Mac/DOCUMENTATION/GraphicsImaging/Reference/CATransaction_class/Introduction/Introduction.html#// apple_ref/occ/clm/CATransaction/setCompletionBlock :): "(メインスレッド上で)すぐに呼び出されることが保証されている完了ブロックオブジェクトその後このトランザクショングループによって追加されたすべてのアニメーションは完了した(または削除された)。 "キー部分は「後で追加されます」。 – albertamg
@albertamgただし、現在のトランザクショングループがコミットされる前にアニメーションが追加されていない(または完了ブロックが別の値に設定されている)場合、ブロックは直ちに呼び出されます。 ' – iwasrobbed
@iWasRobbed yes、トランザクショングループにアニメーションを追加した後でアニメーションが完了する前にブロックが呼び出された理由 – albertamg