アニメーションのグループ化を使用して、1 つのオフスクリーンと別のオンスクリーンNSAnimationContext
をアニメーション化する Mac アプリがあります。アニメーションのグループ化を開始する前に、画面上でアニメーション化するときに開始したい位置 にオフスクリーンを配置します。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
最初のフレームの設定が実際には発生していないようです。
私が間違っていることを誰かが知っていますか?