1

mac os cocoa でアニメーターを使用してアニメーションを実装できます。

[[view animator] setFrame:newFrame];

しかし、私の問題は、ビューのプロパティであるいくつかのポイントをアニメーション化する必要があることです。次のiPhoneコードのようにできます:

[UIView animateWithDuration:0.3 animations:^{
                                for (Point point in self.points) {
                                    point.x += 10;
                                }
                           } completion:^(BOOL finished) {

                                }];
                            }];

Mac ox ココアでこれを行う方法を知りたいですか?

4

1 に答える 1

2

通常、NSViewアニメーションの場合、アニメーターが使用する標準アニメーションをオーバーライドする必要があります。

CABasicAnimation* animation = [CABasicAnimation animation];
animation.delegate = yourDelegate;
NSDictionary *animations = [NSDictionary dictionaryWithObjectsAndKeys:animation,@"frameSize",nil];
[view setAnimations:animations];

アニメーションの鍵は、アニメーション化するプロパティです。

デリゲートが必要ない場合は、次のようなコードを使用できます。

[CATransaction begin];
[CATransaction setAnimationDuration:0.5];
[CATransaction setAnimationTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
[[view animator] setFrameOrigin:origin];
[CATransaction commit];

より複雑なアニメーションが必要な場合は、コンテンツビューをホストするレイヤーを使用してオーバーレイウィンドウを作成し、ビューのスクリーンショットを内部に使用してレイヤーをアニメーション化できます。

于 2012-08-17T10:37:44.060 に答える