2008-09-06 5 views
6

具体的には、私はCore Animationを使用して、自分のクラスで時間の経過とともにプロパティ値を補間するにはどうすればよいですか?

  • 整数以外の型のプロパティにCAを使用するように見ていると
  • CGRect、するCGPoint、CGSize、およびCGAffineTransform構造
  • CATransform3Dデータ構造
  • CGColorおよびCGImageリファレンスを倍増しています

およびCALayersまたはNSViews以外のオブジェクト

答えて

1

あなた自身が変更でき、使用するクラスがカスタムの場合、クラスにsetProgress:(float)fメソッドを追加し、CAを使用してアニメーションを作成し、必要に応じて必要なプロパティを変更します。 fの関数

ちょうど

[[someObject animator] setValue:[NSNumber numberWithFloat:1.0] forKeyPath:@"someCustomProperty.progress"]; 

をするか、またはオブジェクトがアニメーターを持っていない場合は、正しいCAAnimationを自分で作成します。

+0

はい、オブジェクトにアニメーターがなく、CALayerでない場合、どのようにCAAnimationを開始しますか? – dmaclach

+0

あなたはしません。 CALayersの主要なパスだけがCore Animationによってアニメーション化可能です。 – millenomi

0

あなたがしようとしていることを正確にはわかりませんが、問題ではない他のプロパティでCAを使用したい場合は、キーパスに適切なアクションを登録するだけです。 CAActionを使って、AppleのCore Animationドキュメンテーションでこれを行う例があります。具体的には、actionForLayer:forKey:を実装して、そのキーのデフォルトのアニメーション動作を設定し、プロパティアニメーションを暗黙的にrunActionForKey:object:arguments:を実装するようにしたい場合。

CALayers以外のオブジェクトをアニメーション化する場合は、わかりません。レイヤーはCore Animationのルートビジュアルエンティティです。さらに、iPhoneでは、UIViewがレイヤーでサポートされているため、レイヤーにないiPhoneの画面上に何かがあるとは思わないので、なぜそうでないものにアニメーションを使用するか心配しているのはわかりませんCALayer。

関連する問題