Я использую NSWindow без полей, чтобы создать меню выпадающего меню, которое вы можете найти во многих приложениях IOS. В настоящее время я использую setFrame: display: animate: с двумя предустановленными прямоугольниками, чтобы создать эффект скольжения, и у меня также есть анимация, которая угасает фон mainwindow, который в настоящее время работает после, окно закончило анимацию.NSWindow's setFrame: display: animimate: запускается одновременно с другими анимациями
Я бы очень хотел запустить обе эти анимации одновременно. Однако setFrame: display: animate, кажется, блокирует все остальные коды до тех пор, пока они не закончатся.
Есть ли способ переопределить эту функцию setFrame: display: animate? Или может кто-нибудь порекомендовать работу?
У меня есть методы работы, которые запускают [[self animator] setFrame: display:], но я бы предпочел использовать setFrame: display: animimate, потому что он сильно зависит от моего текущего кода и легко настраивается на длительность.
Некоторый код:
//Currently used to animate the window
-(void)showPopWindow{
[self selectAnimationTimeFor:NCpOpen];
[self setFrame:_initialRect display:YES];
[self makeKeyAndOrderFront:NSApp];
[self setFrame:_finalRect display:YES animate:YES];
}
И это другая анимация у меня есть, которая в настоящее время работает после setFrame завершения (заметьте это работает на слое выделяла NSView в).
//...
[layer setBackgroundColor:CGColorCreateGenericRGB(0, 0, 0, 0.5)];
CABasicAnimation *fadeInBackground = [CABasicAnimation animationWithKeyPath:@"opacity"];
fadeBackground.duration = [self openAnimationResizeTime];
fadeBackground.fromValue = [NSNumber numberWithFloat:0.0f];
fadeBackground.toValue = [NSNumber numberWithFloat:1.0f];
[layer addAnimation:fadeInBackground forKey:@"opacity"];