web-dev-qa-db-fra.com

Comment personnaliser Modal View Controller présentant une animation?

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?

24
leavez

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];
56
rdelmar

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)
6
Umit Kaya

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.

...

5
liaogang