我有一个 Mac 应用程序,它使用NSAnimationContext
动画分组来为一个NSView
屏幕外和另一个NSView
屏幕上的动画制作动画。在开始动画分组之前,我将屏幕外NSView
放置在我希望它在屏幕上制作动画时源自的位置。
在 Yosemite 和更早的版本下,这工作得很好,但在 El Capitan 下,就好像NSView
永远不会定位在我指定的起始位置,所以它从错误的方向在屏幕上设置动画。
//Position offscreen view at correct starting point.
offscreenView.frame = STARTING_OFFSCREEN_RECT;
//Create animation grouping
[NSAnimationContext beginGrouping];
[[NSAnimationContext currentContext] setDuration:animationDuration];
[[NSAnimationContext currentContext] setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[[NSAnimationContext currentContext] setCompletionHandler:^{
/*
Do cleanup stuff here
*/
}];
//Move the views
onscreenView.frame = ENDING_OFFSCREEN_RECT:
offscreenView.frame = ENDING_ONSCREEN_RECT;
//End Grouping
[NSAnimationContext endGrouping];
我已尽我所能对此进行了调试,在我看来,offscreenView
一开始的 'frame 设置实际上并没有发生。
有人知道我做错了什么吗?