Pregunta

Mi aplicación es bastante simple, pero tengo algunos problemas cuando se inicia. Me Setted en el Info.plist a ser jardines, pero parece hacer caso omiso de la orden. De hecho, cuando la aplicación se está cargando El simulador es jardines, pero luego se vuelve en modo vertical.

Esta es la jerarquía de las vistas y controladores:

  • MainViewController (se extiende UITabBarController sólo para anular shouldAutorotateToInterfaceOrientation :)
    • Tres UITableViewControllers extendidos como fichas (también los han enchufar el shouldAutorotateToInterfaceOrientation correctamente).

Si yo un poco fuerzo la orientación del dispositivo a horizontal con:

[[UIDevice currentDevice] setOrientation: UIInterfaceOrientationLandscapeRight];

A continuación, por un instante el simulador parpadea en modo vertical, y luego se va paisajístico. El problema es que de esta manera, las animaciones de auto-rotación se inicia, lo cual es algo que no puedo tollerate. Sólo quiero una aplicación paisajístico fijo.

¿Alguna pista? ¿Me estoy perdiendo de algo?

¿Fue útil?

Solución

Trate lo siguiente. No sé por qué no funciona para usted

1) establecer la clave UIInterfaceOrientation
a UIInterfaceOrientationLandscapeRight en su archivo .Plist

2) anular su método UITabBarController shouldAutorotateToInterfaceOrientation (); A continuación, el código sólo se ocupa de pestaña cero y uno, y sólo con un controlador: si tiene un controlador de navegación y desea controlar diferentes controladores que pueden estar en la pila, hay que modificar el código en consecuencia

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

    BOOL tabZeroController = [[[self.viewControllers objectAtIndex:0] visibleViewController] isKindOfClass:[YourTabZeroTableViewController class]];

    BOOL tabOneController = [[[self.viewControllers objectAtIndex:1] visibleViewController] isKindOfClass:[YourTabOneTableViewController class]];


    if(self.selectedIndex == 0 && tabZeroController)
        return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);

    if(self.selectedIndex == 1 && tabOneController)
        return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);

    return NO;

}

2) el ajuste de

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];

en applicationDidFinishLaunching de su delegado sólo se requiere () método para el simulador, no en un dispositivo

3) añadir el siguiente shouldAutorotateToInterfaceOrientation (método) en sus controladores

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

4) ejecutar la aplicación en el dispositivo y compruebe que funciona correctamente mediante el uso de la opción de menú Hardware Girar a la izquierda y Girar a la derecha. Debería ver la pantalla en el modo de paisaje.

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