2012-04-19 4 views
7

と呼び出されたときにアニメーション表示を現在の位置に維持する方法シーケンスで2つのアニメーションが発生した場合、最初のアニメーションを削除して、現在の位置から2番目のアニメーションを開始します。 [layer removeAllAnimations]を使用して、最初のアニメーションをキャンセルしてから、そのレイヤーに2番目のアニメーションを追加すると、そのレイヤーは常に最初の位置に戻ります。私はそれがremoveAllAnimationsのデフォルトアクションだと知っていますが、現在の位置を維持するためにレイヤーを設定できる方法があるかどうかを知りたいと思います。 ありがとうございます。[layer removeAllAnimations]が

更新 - 私はpresentationLayerの位置を取得し、これをモデルレイヤの位置に割り当てることでこれを実現しました。また、私も使用しました - (void)animationDidStop:(UIAnimation *)アニメーションが終了しました:(BOOL); でアニメーションが終了したかどうかを確認します。

あなたが使用することができ
+1

あなたは(あなたがメモリリークのaffraidしている場合) 'removeAllAnimations'を呼び出す必要はありません。とにかく: 'animation.fillMode = kCAFillModeForwards; animation.removedOnCompletion = NO; '通常はそのトリックを行います。 –

+0

ありがとうrokjarc。はい、あなたは正しいですが、私がやりたいことは、終了する前に最初のアニメーションをキャンセルし、2番目のアニメーションを開始することです。これは、presentationLayerの位置を取得し、それをモデルレイヤの位置に割り当てることで行います。その後、アニメーションが停止したかどうかを確認するために、animationDidStopデリゲートメソッドを変更します。 – Jason

+0

それも私を助けた。 – iOmi

答えて

1

:myView.frame = [[myView.layerプレゼンテーション層]フレーム]

関連する問題