有没有办法让NSAnimation像iPhone上的“从当前状态开始”?

时间:2011-01-27 12:51:48

标签: cocoa nsviewanimation

我想让视图移动到窗口调整大小的不同位置。我目前使用NSViewAnimation接收NSWindowDidResizeNotification。

// Create the view animation object.
theAnim = [[NSViewAnimation alloc] initWithViewAnimations:animation];
// Set some additional attributes for the animation.
[theAnim setDuration:1];    // One and a half seconds.
[theAnim setAnimationCurve:NSAnimationEaseIn];
[theAnim setFrameRate:20.0];
[theAnim setAnimationBlockingMode:NSAnimationNonblocking];
// Run the animation.
[theAnim startAnimation];
// The animation has finished, so go ahead and release it.
[theAnim release]; 

(“animation”是一个带有dict的数组,其中包含我的视图的新rect,就像NSAnimation想要的那样) 调整窗口大小时,会多次调用此代码。因此,在调整大小时,一次调整大小会调用大约20次。我现在有20个动画视图移动。 20个不同的重叠。 (它看起来像许多不同的视图,但我认为它是在动画之间跳跃的同一个)

在iPhone上只有视图移动,我可以设置[UIView setAnimationBeginsFromCurrentState:YES],它会工作。有没有办法在OSX上执行此操作? 我可以在视图上创建一个isAnimating变量,但之后它只会移动到一个位置,并且会在动画时忽略快速调整大小。

我如何在OSX上执行此操作? 感谢

1 个答案:

答案 0 :(得分:3)

我刚做了[[album.view animator] setFrame:newFrame];它移动到那里。美丽。 (我可以补充说这太棒了!)