Presentar vista modal con efecto de animación

En la aplicación de mi iPhone, necesito mostrar una vista modal con fondo transparente y debería aparecer con una animación como si apareciera desde el centro de la vista y su tamaño aumentara.

similar a la aplicación de iPhone "dibujar algo" cuando hacemos clic en el botón de configuración.

¿Cómo hago esto?

preguntado el 22 de mayo de 12 a las 11:05

3 Respuestas

Puede hacer uno de los siguientes 4 estilos de transición:

viewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
viewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
viewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
viewController.modalTransitionStyle = UIModalTransitionStylePartialCurl;

[self presentModalViewController:viewController animated:YES];

Si desea algo que no esté incluido en estos valores predeterminados, tendrá que crear su propia animación personalizada para presentar la vista modal. Como las siguientes pero obviamente para el estilo que quieras.

Movimiento horizontal UIModalTransitionStyle

contestado el 23 de mayo de 17 a las 13:05

Digamos que tiene un controlador de vista que se llama una hoja de puntuación que desea presentar. Intente definir este método en el controlador de vista que hará la presentación.

-(void) presentTransparentModalViewController: (ScoreSheet *) aViewController 
{

    scoreSheet = aViewController;
    UIView *view = aViewController.view;

view.opaque = NO;
[view.subviews enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    UIView *each = obj;
    each.opaque = NO;
}];
    [self.view addSubview:view];

    view.center = CGPointMake(160, 800); //for iPhone

    [UIView animateWithDuration:0.9 delay:0 options:UIViewAnimationCurveEaseInOut animations:^{
         view.center = CGPointMake(160, 240);
    } completion:^(BOOL finished) {

        self.view.userInteractionEnabled=YES;
    }];

}

y luego para descartar el controlador:

-(void) dismissTransparentModalViewControllerAnimated:(BOOL) animated{

if (animated) {

    [UIView animateWithDuration:0.4
                     animations:^{
                         scoreSheet.view.center = CGPointMake(scoreSheet.view.center.x, scoreSheet.view.center.y + 480);
                     } completion:^(BOOL finished) {
                         [scoreSheet.view removeFromSuperview];
                         scoreSheet = nil;
                     }];
}


}

Respondido el 03 de diciembre de 12 a las 11:12

No es una respuesta completa, pero tal vez pueda echar un vistazo a esta biblioteca de código abierto:

https://github.com/Split82/HMGLTransitions

Tiene algunas transiciones modales personalizadas, tal vez no exactamente la que está buscando, pero puede agregar fácilmente su transición subclasificando HMGLTransition.

Espero que esto ayude

contestado el 22 de mayo de 12 a las 11:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.