具体的には、私はCore Animationを使用して、自分のクラスで時間の経過とともにプロパティ値を補間するにはどうすればよいですか?
- 整数以外の型のプロパティにCAを使用するように見ていると
- CGRect、するCGPoint、CGSize、およびCGAffineTransform構造
- CATransform3Dデータ構造
- CGColorおよびCGImageリファレンスを倍増しています
およびCALayersまたはNSViews以外のオブジェクト
具体的には、私はCore Animationを使用して、自分のクラスで時間の経過とともにプロパティ値を補間するにはどうすればよいですか?
およびCALayersまたはNSViews以外のオブジェクト
まあ、それはできないようです。私がしなければならないのは[NSAnimationのサブクラス化](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/AnimationGuide/Articles/TimingAnimations.html NSAnimationのサブクラス化)です。これはMacOS 10.4以降のアプリでは動作しますが、Cocoa Touchでは動作しません.NSTimerを使用する以外には選択肢が見つかりません。
あなた自身が変更でき、使用するクラスがカスタムの場合、クラスにsetProgress:(float)fメソッドを追加し、CAを使用してアニメーションを作成し、必要に応じて必要なプロパティを変更します。 fの関数
ちょうど
[[someObject animator] setValue:[NSNumber numberWithFloat:1.0] forKeyPath:@"someCustomProperty.progress"];
をするか、またはオブジェクトがアニメーターを持っていない場合は、正しいCAAnimationを自分で作成します。
あなたがしようとしていることを正確にはわかりませんが、問題ではない他のプロパティでCAを使用したい場合は、キーパスに適切なアクションを登録するだけです。 CAActionを使って、AppleのCore Animationドキュメンテーションでこれを行う例があります。具体的には、actionForLayer:forKey:を実装して、そのキーのデフォルトのアニメーション動作を設定し、プロパティアニメーションを暗黙的にrunActionForKey:object:arguments:を実装するようにしたい場合。
CALayers以外のオブジェクトをアニメーション化する場合は、わかりません。レイヤーはCore Animationのルートビジュアルエンティティです。さらに、iPhoneでは、UIViewがレイヤーでサポートされているため、レイヤーにないiPhoneの画面上に何かがあるとは思わないので、なぜそうでないものにアニメーションを使用するか心配しているのはわかりませんCALayer。
はい、オブジェクトにアニメーターがなく、CALayerでない場合、どのようにCAAnimationを開始しますか? – dmaclach
あなたはしません。 CALayersの主要なパスだけがCore Animationによってアニメーション化可能です。 – millenomi