Анимация представлений с помощью базового слоя анимации

У меня есть 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];
}
8
задан Kevin Sylvestre 31 January 2011 в 03:02
поделиться