У меня есть NSPopover
, который переключается между двумя контроллерами View.Анимация Изменения в содержимом NSPopoverViewController
Я поставил один на старте,
self.popover.contentViewController = viewController1;
и меняю на другой на основе действий пользователя:
self.popover.contentViewController = viewController2;
AppKit делает некоторые анимации в самой NSPopover
для размещения второго VC , которые работают хорошо, но переход между двумя представлениями View Controller вызывает раздражение. Я бы хотел, чтобы они скользили и выходили горизонтально или, по крайней мере, пересекались.
Я использую взгляды слоев спинок, которые я устанавливаю, как это в AppDelegate
«s applicationDidFinishLaunching
метода:
self.popover.contentViewController.view.wantsLayer = YES;
self.popover.contentViewController.view.layerContentsRedrawPolicy = NSViewLayerContentsRedrawOnSetNeedsDisplay;
Вот что я пробовал:
- выведение сначала просмотрите вид контроллера в
-viewWillDisappear
и затухайте во втором представлении View Controller в-viewWillAppear
. Это угасает первый взгляд VC сразу и не выгорает вид второго VC назад в выведении слой первый взгляд в ВК Перед включением поповер-х
contentViewController
:CALayer *theLayer = self.popover.contentViewController.view.layer; CABasicAnimation* fadeAnim = [CABasicAnimation animationWithKeyPath:@"opacity"]; fadeAnim.fromValue = [NSNumber numberWithFloat:1.0]; fadeAnim.toValue = [NSNumber numberWithFloat:0.0]; fadeAnim.duration = 1.0; [theLayer addAnimation:fadeAnim forKey:@"opacity"]; theLayer.opacity = 0.0; self.popover.contentViewController = self.viewController;
Эта вторая стратегия Безразлично» t дождаться завершения анимации до переключения контроллеров просмотра.
Как мне изменить Netsopover contentViewController
?
Спасибо, Макс. Этот вопрос касается Cocoa (Mac), а не Cocoa touch (iOS), поэтому, хотя методы похожи, они не совпадают. В итоге я использовал эквивалент метода, который вы предложили. – magiclantern
Я также должен отметить, что я не мог сделать это непосредственно с помощью 'contentViewController 'от NSPopover, мне пришлось добавить пустой пустой контроллер View, чтобы действовать как« родительский »из моих двух VC и назначить« contentViewController »NSPopover этому родительскому View Controller , – magiclantern