Как настроить пользовательский диспетчер Modal View, представляющий анимацию?
Вместо установки uiviewcontroller modalTransitionStyle
, я хочу добавить CAAnimation (или некоторые другие вещи). Этот код может выполнять пользовательскую анимацию в navigationController
CATransition* transition = [CATransition animation];
transition.duration = 0.4;
transition.type = kCATransitionFade;
transition.subtype = kCATransitionFromBottom;
[self.navigationController.view.layer addAnimation:transition forKey:kCATransition];
[self.navigationController pushViewController:adjustViewController animated:NO];
Как я могу реализовать его в Modal View Controller?
Ответы
Ответ 1
Вам просто нужно добавить переход к слою окна и представить свой контроллер, а не нажимать его:
CATransition* transition = [CATransition animation];
transition.duration = 1;
transition.type = kCATransitionFade;
transition.subtype = kCATransitionFromBottom;
[self.view.window.layer addAnimation:transition forKey:kCATransition];
[self presentViewController:adjustViewController animated:NO completion:nil];
Ответ 2
Быстрая версия
let viewController = YourViewController()
let transition = CATransition()
transition.duration = 0.5
transition.type = kCATransitionFade
transition.subtype = kCATransitionFromBottom
view.window!.layer.add(transition, forKey: kCATransition)
present(viewController, animated: false, completion: nil)
Ответ 3
Из руководства по разработке яблока:
Представление контроллера просмотра с использованием пользовательских анимаций
Чтобы представить контроллер представления с помощью пользовательских анимаций, выполните следующие действия в методе действий существующих контроллеров представлений:
-
Создайте контроллер представления, который вы хотите представить.
-
Создайте свой настраиваемый объект делегирования делегата и назначьте его свойству changeingDelegate. Методы вашего делегата-переходника должны создавать и возвращать ваши пользовательские объекты аниматора по запросу.
-
Вызвать метод presentViewController: анимированный: завершение: для представления контроллера представления.
...