0

アニメーター プロキシを使用して NSView のフレームのアニメーションを実行しようとしています。継続時間とタイミング曲線をカスタマイズしようとしていますが、これを Mac OSX 10.6 で動作する方法で行う必要があるため、NSAnimationContext で非常に見栄えの良いメソッドを使用できません。

私の調査によると、私がする必要があるのは、独自の CAAnimation オブジェクトを作成し、それをアニメーション化するオブジェクトのアニメーション ディクショナリに入れることです。このコードはうまく機能します:

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"frameOrigin"];
animation.duration = 1.0;
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

[self.myView setAnimations:[NSDictionary dictionaryWithObject:animation forKey:animation.keyPath]];

次に、次のようにビューを移動できます。

[[self.myView animator] setFrame:myNewFrame];

このコードはうまく機能します。ただし、フレーム プロパティのアニメーション化について Apple が次のように述べているため、API を正しく使用していないのではないかと少し心配しています。

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreAnimation_guide/AnimatableProperties/AnimatableProperties.html#//apple_ref/doc/uid/TP40004514-CH11-SW1

フレームは CALayer のアニメーション可能なプロパティではないと彼らは言います。ここで、実際にレイヤーを直接操作しているわけではありませんが、CABasicAnimation オブジェクトが操作していると思います。私はここで火遊びをしているのか、それとも正しいことをしているのだろうか?

もし私のやり方が間違っていたら、正しい方法を教えていただけるとありがたいです...私は 10.6 API しか使えないことを覚えておいてください。本当にありがとう!

4

0 に答える 0