Estoy haciendo una aplicación para iPhone y necesito que esté en modo vertical, por lo que si el usuario mueve el dispositivo hacia los lados, no gira automáticamente. ¿Cómo puedo hacer esto?¿Cómo puedo desactivar la orientación horizontal?
Respuesta
Para desactivar orientaciones para una visión particular Controlador, ahora debería anular supportedInterfaceOrientations
y preferredInterfaceOrientationForPresentation
.
- (NSUInteger) supportedInterfaceOrientations {
// Return a bitmask of supported orientations. If you need more,
// use bitwise or (see the commented return).
return UIInterfaceOrientationMaskPortrait;
// return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown;
}
- (UIInterfaceOrientation) preferredInterfaceOrientationForPresentation {
// Return the orientation you'd prefer - this is what it launches to. The
// user can still rotate. You don't have to implement this method, in which
// case it launches in the current orientation
return UIInterfaceOrientationPortrait;
}
Si usted está apuntando algo más antiguo que iOS 6, que desea el método shouldAutorotateToInterfaceOrientation:
. Al cambiar cuando devuelve sí, usted determinará si rotará a dicha orientación. Esto solo permitirá la orientación vertical normal.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
// Use this to allow upside down as well
//return (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown);
}
Tenga en cuenta que shouldAutorotateToInterfaceOrientation:
ya no se utiliza en IOS 6.0.
Eliminando el método shouldAutorotateToInterfaceOrientation
de su clase también funciona completamente. Si no planea rotar, entonces no tiene sentido tener el método en su clase, mientras menos código, mejor, mantiene las cosas limpias.
Esta respuesta ahora está obsoleta; 'shouldAutorotateToInterfaceOrientation' ha quedado obsoleto durante años. –
@MarkAmery https://developer.apple.com/reference/uikit/uiviewcontroller/1621419-shouldautorotate no tiene un aviso de desaprobación. –
@VaddadiKartick También es un método diferente al mencionado en esta respuesta; No estoy seguro de cuál es tu punto. –
Xcode 4 y por debajo
Para aquellos que se lo perdieron: se puede usar la pantalla de configuración del proyecto para fijar orientaciones a lo largo de la aplicación (sin necesidad de reemplazar los métodos en cada controlador):
Es tan simple como alternar las orientaciones de interfaz admitidas. Puede encontrar haciendo clic en su Proyecto en el panel izquierdo> el objetivo de la aplicación> pestaña Resumen.
Esto es obsoleto; la interfaz de usuario es diferente ahora. –
Xcode 5 y superiores
- Haga su proyecto en el Navegador de proyectos, en la barra lateral izquierda para abrir la configuración del proyecto
- vaya a la pestaña general.
- Desmarque las opciones que no desee en la sección dede implementación de Información, bajo Orientación Dispositivo
No puedo anular la selección de Landscape en el mío. Los vuelve a encender de inmediato. Además, si los elimino de Info.plist, los devuelve. – Almo
Swift 3 Si usted tiene un navigationController, subclase como este (solo para retrato):
class CustomNavigationViewController: UINavigationController {
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
return UIInterfaceOrientationMask.portrait
}
override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {
return UIInterfaceOrientation.portrait
}
}
- 1. Desactivar orientación pero detectar orientación
- 2. Android, solo orientación horizontal?
- 3. Orientación horizontal para UITabBarController?
- 4. Detecta la orientación de Android: horizontal-izquierda v. Horizontal-derecha
- 5. ItemsControl con orientación horizontal
- 6. Orientación horizontal en el control del repetidor
- 7. Cómo desactivar el rebote horizontal UIWebView
- 8. WPF a XPS en orientación horizontal
- 9. imprimiendo una imagen en orientación horizontal?
- 10. ¿Cómo puedo cambiar la orientación de una ventana a horizontal en XCode 4 Interface Builder?
- 11. La transición animada no funciona correctamente en orientación horizontal
- 12. Cambiar o desactivar la animación rotativa del iPhone cuando cambia la orientación
- 13. C# ListView Desactivar barra de desplazamiento horizontal
- 14. Rails 3 y PDFKit, ¿cómo puedo convertir un archivo HTML en un PDF de orientación horizontal?
- 15. ¿Cómo puedo desactivar _moz_resizing?
- 16. Modal View Force del controlador Orientación horizontal en iOS 6
- 17. Widget de Android diferente orientación vertical y horizontal
- 18. iOS: ¿Cómo puedo cambiar la orientación de un UICollectionViewCell?
- 19. ¿Cómo se bloquea la orientación de la aplicación (horizontal o vertical)?
- 20. ¿Cómo obtener la orientación actual de la vista del iPhone o la última orientación del dispositivo?
- 21. ¿cómo puedo desactivar la salida a log4j.rootLogger?
- 22. ¿Cómo puedo desactivar la detección táctil?
- 23. Cómo determinar la orientación absoluta
- 24. Barra de accionesSherlock: pestañas que no responden en orientación horizontal
- 25. Diseño diferente para orientación horizontal y vertical android
- 26. ¿La orientación de todos los monitores de escritorio/portátiles es similar a la orientación horizontal en dispositivos como el iPad?
- 27. ¿Cómo puedo desactivar Java basurero?
- 28. ¿Cómo puedo desactivar un UISegmentedControl?
- 29. ¿Cómo se crea una aplicación que solo permite la orientación horizontal?
- 30. Cambie la orientación del papel para los diagramas R a horizontal
Si la vista contr Oller está en un controlador de navegación, luego el controlador de navegación es donde deben implementarse. –
@MrRogers Lo hice, pero no funciona. Ver http://pastebin.com/dLfLLP2j Cada controlador implementa supportedInterfaceOrientations correctamente. El primer controlador de vista se muestra correctamente en vertical incluso cuando la aplicación se inicia desde el dispositivo en la pantalla de inicio en el iPhone Plus. Pero cuando navego a otro controlador, gire el dispositivo hacia adelante y hacia atrás para configurar el otro controlador en horizontal, y vuelva, el primer controlador está ahora en el paisaje. Lo que quiero es que el primer controlador esté en vertical y el segundo sea .all. –
Sugiero relacionar 'NSUinteger' de' supportedInterfaceOrientations' (primera línea de código) a 'UIInterfaceOrientationMask'. Xcode 8 advierte sobre "Tipo de retorno conflictivo en la implementación de 'supportedInterfaceOrientations': 'UIInterfaceOrientationMask' (alias 'enum UIInterfaceOrientationMask') frente a 'NSUInteger' (alias 'unsigned long')" y hace sens. Gracias por su respuesta – GabLeRoux