6

具体的には、以外のタイプのプロパティで CA を使用しようとしています。

  • 整数と倍精度
  • CGRect、CGPoint、CGSize、および CGAffineTransform 構造体
  • CATransform3D データ構造
  • CGColor と CGImage のリファレンス

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

4

3 に答える 3

1

自分で変更を行うことができ、使用するクラスがカスタムである場合は、クラスに setProgress:(float) f メソッドを追加し、CA を使用してアニメーション化し、必要に応じて目的のプロパティを f の関数として変更することをお勧めします。 .

ただやる

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

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

于 2008-09-12T14:46:49.783 に答える
0

うーん、どうもできないみたいですね。私がすべきことは [NSAnimation のサブクラス化]( https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/AnimationGuide/Articles/TimingAnimations.html NSAnimation のサブクラス化) です。これは MacOS 10.4+ アプリでは機能しますが、NSTimer を使用する以外に代替手段が見つからない Cocoa Touch では機能しません。

于 2008-09-07T16:36:05.087 に答える
0

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

CALayers 以外のオブジェクトのアニメーションについては、よくわかりません。レイヤーは、コア アニメーションのルート ビジュアル エンティティです。さらに、iPhone では、すべての UIView がレイヤーに支えられています。iPhone の画面にレイヤーにないものがあるとは思わないので、そうでないものにアニメーションを使用することを心配する理由がわかりません。 CALayer.

于 2008-10-28T03:36:58.950 に答える