Pregunta

Tengo 2 interfaces gráficas de usuario y 2 controladores 1 se llama landscapeguicontroller y el segundo se llama highguicontroller.

Ahora general que llamo el highguicontroller, y cuando puedo girar mi iPhone detecta que a continuación se muestra la landscapeguicontroller: Código:

    landscapeguicontroller *neu =[[landscapeguicontroller alloc] initWithNibName:nil bundle:nil];
    [self presentModalViewController:neu animated:YES];     
    [self dismissModalViewControllerAnimated:YES];

El problema es que entonces la animación empuja la nueva ventana del lado allá del iphone arriba en la ventana.

En el Landscapeguicontroller, he añadido a los de las siguientes líneas:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

cuando quiero ir de vuelta a la highguicontroller i call:

[self dismissModalViewControllerAnimated:YES];

que todas las obras, pero sólo en la segunda animación veo la correcta "la animación de rotación". ¿Tienes alguna sugerencia?

Así que una breve descripción del problema: en el 1. animación de alta a paisaje, el paisaje es empujado dentro de la ventana Pero en el 2. animación de horizontal a alta, las miradas de rotación como una rotación de verdad ...

i desea que el aspecto 1.animation como la animación 2.

saludos cordiales Ploetzeneder

¿Fue útil?

Solución

Para evitar "El problema es que entonces la animación empuja la nueva ventana del lado allá del iphone arriba en la ventana.", Intente establecer la propiedad modalTransitionStyle del controlador de vista a uno de los siguientes, lo que usted prefiera: typedef enum {    UIModalTransitionStyleCoverVertical = 0,    UIModalTransitionStyleFlipHorizontal,    UIModalTransitionStyleCrossDissolve, } UIModalTransitionStyle;

Además, si se quiere evitar la rotación animada, puede configurar su shouldRotate ... método para no permitir otras orientaciones, pero luego se ha configurado para recibir notificaciones cuando el dispositivo cambia físicamente orientaciones, y presentar su viewcontroller modal cuando en el orientación apropiada para ello. Ver Apple "AlternateViews" código de ejemplo para un ejemplo de esto.

Las notificaciones reflejan la orientación física del dispositivo, y se puede recibirlos si se permite que la interfaz para cambiar o no. (Usted puede mirar en la propiedad de los statusBarOrientation UIApplications para ver lo que la orientación de la interfaz de usuario está en).

Otros consejos

Parece que usted quiere ir la secuencia siguiente:

  1. Físicamente girar el dispositivo de vertical a horizontal
  2. Animate la vista vertical (highguicontroller) a paisaje
  3. Empuje la vista horizontal (landscapeguicontroller) desde el nuevo "fondo" de la pantalla

Si eso es correcto, usted necesita tener algo como lo siguiente en su aplicación highguicontroller:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
  return interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown;
}

Esto se encargará de la etapa 2 (que girará la vista vertical a horizontal en cualquier dirección).

A continuación, usted querrá algo como esto:

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
  if(fromInterfaceOrientation == UIInterfaceOrientationPortrait) {
    [self presentModalViewController:landscapeguicontroller animated:YES];
  }
  else {
    [self dismissModalViewControllerAnimated:YES];
  }
}

Eso debería presentar la vista horizontal después de la animación de rotación es completa y luego descartarla después de que el dispositivo es de nuevo girado a retrato.

Espero que ayude!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top