Au lieu de définir modalTransitionStyle
d'uiviewcontroller, je veux ajouter une CAAnimation (ou autre chose). Ce code peut effectuer une animation personnalisée dans 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];
Comment puis-je l'implémenter sur un contrôleur de vue modale?
Il vous suffit d'ajouter la transition au calque de la fenêtre et de présenter votre contrôleur plutôt que de le pousser:
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];
Version Swift
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)
De Apple guide de développement:
Présentation d'un contrôleur de vue à l'aide d'animations personnalisées
Pour présenter un contrôleur de vue à l'aide d'animations personnalisées, procédez comme suit dans une méthode d'action de vos contrôleurs de vue existants:
Créez le contrôleur de vue que vous souhaitez présenter.
Créez votre objet délégué de transition personnalisé et affectez-le à la propriété transitioningDelegate du contrôleur de vue. Les méthodes de votre délégué de transition doivent créer et renvoyer vos objets d'animation personnalisés lorsque cela vous est demandé.
Appelez le presentViewController: animated: complétion: méthode pour présenter le contrôleur de vue.
...