2012-02-21 26 views
1

開発者用ドキュメントのNSAnimationについては、-addProgressMarkメソッドが見つかりました。 CABasicAnimationの場合、私は似たようなものは見つかりませんでした。CABasicAnimationの進捗状況は?

CABasicAnimation * rotateLayer = [CABasicAnimation animationWithKeyPath:@"transform.rotation.x"]; 

とき、私は何かをしたいアニメーションの進行rotateLayer = 50%... 私はこれをどのように行うのですか?

答えて

2

これを行うにはNSTimerを使用します。

アニメーション(referenceからCABasicAnimation継承の)CAAnimationanimationDidStart:デリゲートメソッドへの感謝を開始したときにあなたが知っていることができます。

アニメーションの持続時間(アニメーションの長さを設定する)を知っているので、アニメーションがその持続時間の50%に達すると、必要な処理を実行できます。

私の2セント:

+2

この解決策は、ハックのようなものです...正しい方法は、CALayerをサブクラス化し、drawInContextメソッドで再生されるアニメーションを測定することです。 – yunas

0

私はよりエレガントなアプローチは2つのアニメーションを持つことだと思います。最初のコンプリートハンドラを介して順番にキックオフするか、最初のCATransaction(後半のアニメーションが遅れている)で両方を登録し、最初のコンプリートハンドラを使ってハーフウェイロジックを実行します。

少なくとも、あなたのコードはフォーカスされ、ローカライズされています。

関連する問題