2012-03-08 15 views
2

transitionFromView:toView:duration:options:completionを使用してキャンセルし、アニメーションを開始するにはどうすればよいですか? 実際に私が望むのは、アニメーションがキャンセルされた場合、そのブロックが状態マシンを遷移させるだけで、完了ブロックを呼び出さないようにすることです。私はこれを読ん https://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview/uiview.html: 完了アニメーションシーケンスが終了したときに実行されるブロックオブジェクトらしいtransitionFromView:toView:duration:options:completionを使用してキャンセルし、アニメーションを開始するにはどうすればよいですか?

はここので、アニメーションをキャンセルすることが可能です。このブロックには戻り値がなく、完了ハンドラが呼び出される前にアニメーションが実際に終了したかどうかを示す1つのブール引数が使用されます。

アニメをキャンセルするにはどうすればよいですか? ありがとうございました。

答えて

2

これは、このシナリオでアニメーション化されるのは、fromViewのスーパービューのレイヤーです。あなたは、コールバックはアニメーションが完了したか否かを示すBOOL引数を取り、

[parentView.layer removeAllAnimations]; 

あなたの完了コールバックはまだ呼ばれていますが、上に引用してきたように、ということを覚えておいてくださいされるといつでもアニメーションをキャンセルすることができます。引数がない場合は引数をチェックして何もしないでください。

視覚的には、アニメーションが最後までジャンプするように見えます。 toViewがアクティブなインターフェイスとして表示されます。実際、toViewはアニメーションの初めから、スーパービュー内に既に存在していました。アニメーション中にレイヤのプレゼンテーションレイヤーで覆われただけです。

+0

返信ありがとうございますが、動作していないようです。私はいつも終了=真を受け取る。この男はまったく同じ問題を抱えています: http://www.iphonedevsdk.com/forum/iphone-sdk-development/94408-cancel-uiview-animation-block.html アイデアはありますか?ありがとう。 – Ricardo

+0

うーん...これは「コンピュータが接続されていますか?」というようなものです。ハイテクサポートの無回答ですが、removeAllAnimationsメッセージが適切な場所に移動していることを2回確認することができます.2つのビューの共通の親ビューのレイヤーがスワップされます。 UIVIewの特定のUIKitサブクラスに関連してここではやや難しいかもしれませんが、この小さな[デモプロジェクト](http://garthsnyder.com/TransitionWithView2.zip)で基本ケースで動作することを確認しました。アニメーションをキャンセルすると、視覚的に終了するのがわかりますか? – GSnyder

+0

[demo project]のGitHubバージョン(https://github.com/GarthSnyder/StoppedAnimation)。 – GSnyder

関連する問題