У меня есть приложение для 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
в самом начале на самом деле не происходит.
Кто-нибудь знает, что я делаю неправильно?