framework - swift ios documentation
¿Cómo personalizar el controlador de vista modal presentando animación? (3)
En lugar de configurar modalTransitionStyle de modalTransitionStyle
, quiero agregar un CAAnimation (u otra cosa). Este código puede realizar una animación personalizada en 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];
¿Cómo puedo implementarlo en un controlador de vista modal?
A partir de la manzana desarrollamos guía:
Presentación de un controlador de vista usando animaciones personalizadas
Para presentar un controlador de vista usando animaciones personalizadas, haga lo siguiente en un método de acción de sus controladores de vista existentes:
Cree el controlador de vista que desea presentar.
Cree su objeto delegado de transición personalizado y asígnele la propiedad transitioningDelegate del controlador de vista. Los métodos de su delegado de transición deben crear y devolver sus objetos de animador personalizados cuando se le solicite.
Llame al presentViewController: animated: completed: método para presentar el controlador de vista.
...
Solo necesita agregar la transición a la capa de la ventana y presentar su controlador en lugar de empujarlo:
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];
Versión rápida
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)