Los valores posibles para UIDevice.orientation
incluyen UIDeviceOrientationFaceUp
y UIDeviceOrientationFaceDown
. Si bien puede ser útil saber que el dispositivo es plano, esto no nos dice si es plano y muestra una interfaz orientada en modo retrato o paisaje. ¿Hay alguna manera de encontrar la orientación actual de la GUI en los casos en que el dispositivo devuelve información ambigua? Supongo que podría hacer un seguimiento de los eventos de cambio de orientación para recordar la última orientación retrato/paisaje o verificar el ancho y alto de los límites principales de UIView, pero eso parece kludgey. ¿Hay alguna propiedad en el dispositivo o UIView que me esté faltando?¿Cómo determinar mediante programación la orientación de la interfaz de iPhone?
Respuesta
En un viewcontroller puede simplemente usar el código:
UIInterfaceOrientation interfaceOrientation = self.interfaceOrientation;
El UIInterfaceOrientation es una enumeración:
typedef enum {
UIInterfaceOrientationPortrait = UIDeviceOrientationPortrait,
UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,
UIInterfaceOrientationLandscapeLeft = UIDeviceOrientationLandscapeLeft,
UIInterfaceOrientationLandscapeRight = UIDeviceOrientationLandscapeRight
} UIInterfaceOrientation;
que he visto en la misma situación. Específicamente en este flujo:
- El controlador 1 carga, por ejemplo, en ... Retrato.
- Presione otro controlador en la pila
- Mientras está en el controlador 2, gire la orientación del dispositivo a Horizontal.
- Coloque el dispositivo sobre una mesa y luego vuelva al controlador original.
En este punto, las comprobaciones de orientación que he visto devuelven una orientación no válida de 5, por lo que no es posible determinar si se debe usar un diseño horizontal o vertical. (Estoy haciendo un posicionamiento de diseño personalizado por orientación, así que esta es información significativa)
En mi caso, se usa una verificación de ancho de límites en la vista para determinar el verdadero estado de las cosas, pero hubiera Me encantaría saber si otros se han dirigido de manera diferente.
He utilizado la orientación de la barra de estado como punto de referencia de trabajo en el iPad. La verificación de Bound no funcionó para mí. – Moshe
Usted puede obtener la orientación de 3 formas:
UIInterfaceOrientation orientation = self.interfaceOrientation;
vuelve UIInterfaceOrientation, la orientación actual de la interfaz . Es una propiedad de UIViewController, puede acceder al este solo en las clases UIViewController.UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
devuelve UIInterfaceOrientation, la orientación actual de la barra de estado de la aplicación . Puede acceder a esa propiedad en cualquier punto de su aplicación. Mi experiencia muestra que esto es más manera efectiva para recuperar la orientación de la interfaz real.UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
devuelve UIDeviceOrientation, orientación del dispositivo. Puede acceder a esa propiedad en en cualquier punto de su solicitud . Pero tenga en cuenta que UIDeviceOrientation no siempre es UIInterfaceOrientation.Por ejemplo, cuando su dispositivo está en una tabla simple puede recibir un valor inesperado.
no es UIInterfaceOrientation, es - UIDeviceOrientation, eso es lo que micco ya mencionó en su publicación. – justadreamer
Tienes razón. UIDeviceOrientation no siempre es UIInterfaceOrientation. – beryllium
Esto me estaba molestando por años. Gracias. – hanno
orientación de la barra de estado (statusBarOrientation) devuelve siempre la orientación interfaz incluso si la barra de estado está oculta.
Puede usar la orientación de la barra de estado sin un controlador de vista. Le da la orientación de vista actual, no la orientación del dispositivo.
UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
Si sólo se preocupa de que el dispositivo es horizontal o vertical, hay algunos métodos de conveniencia agradables en el viewcontroller:
UIDeviceOrientationIsLandscape(self.interfaceOrientation)
UIDeviceOrientationIsPortrait(self.interfaceOrientation)
Esto funciona bastante bien. ¡Gracias! – Shantanu
Aquí hay una codesnippet le puede resultar útil:
UIInterfaceOrientation orientation = [UIDevice currentDevice].orientation;
NSLog(@" ORIENTATION: %@", UIInterfaceOrientationIsLandscape(orientation) ? @"LANDSCAPE" : @"PORTRAIT");
- 1. ¿Cómo verificar la orientación del dispositivo mediante programación en iPhone?
- 2. Cómo determinar la orientación absoluta
- 3. determinar mediante programación utilizando el camino de la gema bundler
- 4. ¿Hay alguna manera de forzar la orientación de la interfaz para que cambie en iPhone?
- 5. MySQL: ¿Cómo determinar las relaciones de claves foráneas mediante programación?
- 6. Abrir la aplicación de fotos mediante programación
- 7. En Linux: ¿cómo puedo determinar mediante programación si una interfaz NIC está habilitada y conectada?
- 8. Bloquear y desbloquear mediante programación la pantalla del iPhone
- 9. ¿Cómo obtener la orientación actual de la vista del iPhone o la última orientación del dispositivo?
- 10. mejor manera de detectar mediante programación iPad/iPhone hardware
- 11. iPhone AVFoundation orientación de la cámara
- 12. Diferentes formas de obtener la orientación actual de la interfaz?
- 13. ¿Cómo puedo determinar mediante programación si la barra de tareas de Windows está oculta o no?
- 14. ¿Cómo puedo determinar mediante programación la página de códigos predeterminada actual de Windows?
- 15. Cómo determinar mediante programación el nombre de la instancia de CKEditor
- 16. Cómo determinar mediante programación la versión instalada de IE a partir de un script
- 17. Cómo determinar mediante programación las aplicaciones predeterminadas en Linux
- 18. ¿Cómo detectar mediante programación el interruptor de silenciamiento del iPhone?
- 19. ¿Cómo puedo cambiar la fuente de una etiqueta mediante programación?
- 20. Determine la velocidad en Internet mediante programación
- 21. Enviar SMS desde el iPhone mediante programación
- 22. ¿Cómo comenzar con la programación de la interfaz de hardware?
- 23. xCode 4.3 cómo acceder mediante programación a los colores de la paleta del generador de interfaz?
- 24. IPhone/IPad: ¿Cómo obtener ancho de pantalla mediante programación?
- 25. Encender la pantalla mediante programación
- 26. ¿Cómo suscribirse a sí mismo en caso de orientación del dispositivo (no orientación de la interfaz)?
- 27. identificando mediante programación el dispositivo iphone
- 28. ¿Obtiene la velocidad de enlace mediante programación?
- 29. Cómo formatear la celda de la cuadrícula mediante programación
- 30. Cómo agregar/quitar la referencia mediante programación?
si Necesito desarrollar una aplicación de iPhone con toda la orientación de la interfaz de lo que debería hacer ...? ¿Hay algún archivo de doc o tutorial de blog que en su mente dígame por favor ... – Jagds
"No use esta propiedad (UIViewController.interfaceOrientation) para informar las decisiones de diseño. En su lugar, use la propiedad statusBarOrientation, descrita en UIApplication Class Reference." dice Apple –