У меня есть NSWindow
, содержащий NSView
с включенным «Требуется основной слой анимации». Затем представление содержит множество NSImageView
, которые изначально анимируются в позицию. Когда я запускаю анимацию, она очень медленная и пропускает большую часть кадров. Однако, если я отключу «Wants Core Animation Layer», анимация будет работать отлично. Мне понадобится основной слой анимации, но я не могу понять, как заставить его работать адекватно.
Могу я что-нибудь сделать, чтобы исправить проблемы с производительностью?
Вот код:
// AppDelegate
NSRect origin = ...;
NSTimeInterval d = 0.0;
for (id view in views)
{
[view performSelector:@selector(animateFrom:) withObject:origin afterDelay:d];
d += 0.05f;
}
// NSImageView+Animations
- (void)animateFrom:(NSRect)origin
{
NSRect original = self.frame;
[self setFrame:origin];
[NSAnimationContext beginGrouping];
[[NSAnimationContext currentContext] setDuration:0.20f];
[[self animator] setFrame:original];
[NSAnimationContext endGrouping];
}