Estoy tratando de crear una transición personalizada para que el controlador de vista de destino se deslice hacia abajo desde la parte superior.El controlador de la vista de origen se oculta durante la transición personalizada
Escribí mi código según el ejemplo de the documentation.
El problema es que cuando se ejecuta la segue, el controlador de la vista de origen se pone negro, y luego ocurre la animación. ¿Cómo puedo evitar que el controlador de vista de fuente se vuelva negro?
(I bastante bueno en la implementación de la solución presentada en this answer pero la pantalla o bien se queda en negro después de la transición, o vuelve al controlador de vista de origen.)
Aquí está mi código:
-(void)perform{
UIViewController *splashScreen = self.sourceViewController;
UIViewController *mainScreen = self.destinationViewController;
//Place the destination VC above the visible area
mainScreen.view.center = CGPointMake(mainScreen.view.center.x,
mainScreen.view.center.y-600);
//Animation to move the VC down into the visible area
[UIView animateWithDuration:1
animations:^{
mainScreen.view.center = CGPointMake(mainScreen.view.center.x, [[UIScreen mainScreen] bounds].size.height/2);
}
];
[splashScreen presentModalViewController:mainScreen animated:NO];
}
La solución es increíblemente simple. Debe finalizar la animación ANTES de presentar el nuevo controlador de vista. No hay nada más para eso. – Fattie