2012-04-12 14 views
18

Tengo una aplicación compuesta por una gran cantidad de controladores de visualización ... en el resumen del proyecto he configurado la orientación vertical como la única orientación de dispositivo compatible.¿Se puede desactivar la rotación de forma global en una aplicación de iOS?

Sin embargo, la aplicación todavía se ensucia cuando se gira hacia los lados.

Mi pregunta es, ¿hay alguna manera de deshabilitar globalmente la autorrotación a través del delegado de la aplicación o algo así?

¿O tengo que acceder a todos mis controladores de vista y agregar el método "shouldAutorotateToInterfaceOrientation"?

sólo que no quieren perderse la adición a uno o algo ...

Gracias!

+1

Ha pasado un tiempo desde que hice iOS, pero ¿hay algo que puedas poner en la aplicación? ¿Algo sobre "orientaciones compatibles" o algo así? –

Respuesta

6

en el método de la raíz del controlador de vista:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
// Return YES for supported orientations 
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); 
} 

conjunto 'retorno NO';

esto debería hacer para todas las Vistas.

+4

no funcionó para mí –

67

En Info.plist expanda "Orientaciones de interfaz compatibles" y elimine elementos de Paisaje para hacer que su aplicación solo se ejecute en modo vertical.

12

Después de luchar para establecer en los métodos shouldAutorotate y supportedInterfaceOrientation de UIViewController, sin éxito en iOS6, encontré que lo más efectivo es establecerlo en el delegado de la aplicación.

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window 
{ 
    return UIInterfaceOrientationMaskPortrait; 
} 

Sin embargo, al devolver UIInterfaceOrientationMaskPortraitUpsideDown estaba bloqueando mi aplicación. ¡No sé lo que estaba haciendo mal!

+2

Esto también funciona para iOS 8. Funcionó perfectamente para mí en combinación con la configuración de orientación de interfaz compatible establecida en el archivo 'Info.plist' de la aplicación –

8

Ahora hay tres tipos de teclas de orientación del dispositivo en el info.plist.

  1. orientaciones compatibles de interfaz (iPad)
  2. orientaciones de interfaz soportado (iPhone)
  3. soportados orientaciones interfaz

tercera se creo para aplicaciones no universales y resto dos anteriores son para iPad y iPhone.

Deberías intentarlo. La respuesta de

enter image description here

+0

Gracias. Esto es lo único que tenía que hacer para forzar el retrato solo para iPhone y iPad. –

0

Haris Hussain parece estar en desuso ahora, a partir de IOS 6, pero hay nuevos métodos disponibles para limitar/permitiendo la rotación.

Éstos son los métodos enumerados en la cabecera UIViewController:

// New Autorotation support. 
- (BOOL)shouldAutorotate NS_AVAILABLE_IOS(6_0); 
- (UIInterfaceOrientationMask)supportedInterfaceOrientations NS_AVAILABLE_IOS(6_0); 
// Returns interface orientation masks. 
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation NS_AVAILABLE_IOS(6_0); 

Tenga en cuenta que shouldAutoRotate no parece funcionar si se inicia la aplicación en un estado girado ya!

0

Si admite el iPad, NO DEBERÍA desmarcar las orientaciones del paisaje, ya que evitará que su aplicación sea aceptada por Apple en el App Store.

Para evitar de girar antes de la aplicación muestra la primera pantalla, poner esto dentro de su AppDelegate.m

Este método funciona y probado en iOS 7.1 anteriormente.

// G - fix for ipad. 
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window 
{ 
    return UIInterfaceOrientationMaskPortrait; 
} 
Cuestiones relacionadas