Tengo un UIWebView
que me gustaría cargar diferentes URL dependiendo de si es vertical u horizontal. ¿Cómo puedo averiguar cuál es mi orientación actual dentro de viewWillAppear
?iOS: ¿Cómo averiguo la orientación actual en viewWillAppear?
Respuesta
Utilice la propiedad statusBarOrientation
de UIApplication. Puede tener problemas si usa la orientación del dispositivo si es UIDeviceOrientationFaceUp
o UIDeviceOrientationFaceDown
.
Ejemplo
UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
if (UIInterfaceOrientationIsLandscape(orientation))
{
// Do something when in landscape
}
else
{
// Do something when in portrait
}
Cuando las cargas de aplicaciones, que no conoce su orientation- actual
UIInterfaceOrientation orientation = [[UIDevice currentDevice] orientation];
if (orientation == UIDeviceOrientationPortrait) {
NSLog(@"portrait");// only works after a rotation, not on loading app
}
Una vez que gira el dispositivo, se obtiene la orientación correcta, pero cuando se carga la aplicación, sin cambiar la orientación, parece que usando [[UIDevice currentDevice] orientation]
no conoce la orientación actual.
Así que hay que hacer 2 cosas -
- intente configurar las orientaciones del dispositivo aceptadas de la aplicación en el archivo plist
- En sus UIViewControllers, tendrá que reemplazar el método
shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)
para volver SI cuando la aplicación deberotate:
Creo que entendió mal mi pregunta - mis orientaciones cambian muy bien (he definido shouldAutorotate ya), pero quieren saber qué variable que puedo comprobar para ver qué orientación estoy actualmente en. – Gibson
verifique mi respuesta actualizada. necesita implementar - 'UIInterfaceOrientation orientation = [[UIDevice currentDevice orientation] orientation];' –
@Srikar Usé '[[UIDevice currentDevice orientation] orientation]' para este propósito una vez y terminé teniendo un error en mi código cuando la orientación era ' UIDeviceOrientationFaceUp' o 'UIDeviceOrientationFaceDown'. Fue entonces cuando cambié a usar '[UIApplication sharedApplication] .statusBarOrientation', que es del tipo' UIInterfaceOrientation' en lugar de 'UIDeviceOrientation'. Tenga en cuenta que no tiene que mostrar la barra de estado para que este código funcione. Creo que antes de realizar el cambio incluso estaba usando la macro 'UIDeviceOrientationIsLandscape (deviceOrientation)' cuando me encontré con el error boca arriba/cara abajo. – Sam
Si la secuenciación es de las llamadas pertinentes significa que no se puede confiar en interfaceOrientation
tener el valor correcto a continuación viewWillAppear
- suponiendo que los paren t controlador de vista gira - lo más seguro es probablemente self.parentViewController.interfaceOrientation
. Si no se puede intentar hacer una primera suposición de [[UIDevice currentDevice] orientation]
, que no siempre puede ser 100% del dinero (por ejemplo, si el dispositivo está acostado sobre una mesa cuando se inicia su aplicación), pero es probable que le adivine mejor que siempre asumiendo retrato.
UIDeviceOrientation getCurrentOrientation() {
UIDevice *device = [UIDevice currentDevice];
[device beginGeneratingDeviceOrientationNotifications];
UIDeviceOrientation currentOrientation = device.orientation;
[device endGeneratingDeviceOrientationNotifications];
return currentOrientation;
}
Es hasta usted para convertir el UIDeviceOrientation
a UIInterfaceOrientation
.
¡esta es la única solución que funcionó para mí! ¡gracias! – maza23
- 1. ¿Cómo averiguo la versión actual de Solr?
- 2. viewWillAppear vs viewDidLoad ios
- 3. popViewController/viewWillAppear no animada en IOS 5
- 4. ¿Cómo obtener la orientación actual de iPhones?
- 5. En Git, ¿cómo averiguo cuál es mi revisión actual?
- 6. orientación Interface en IOS 6.0
- 7. iOS: ¿Animar la orientación incorrecta en rootViewController?
- 8. UIPopoverController accidente orientación en IOS 6
- 9. ¿Cómo obtener la orientación actual de la vista del iPhone o la última orientación del dispositivo?
- 10. Cómo establecer la orientación predeterminada en iOS Simulator
- 11. orientación actual del dispositivo iphone en ViewDidLoad
- 12. iOS 6 - Cómo ejecutar código personalizado cuando cambia la orientación
- 13. iOS: ¿Cómo puedo cambiar la orientación de un UICollectionViewCell?
- 14. Evitar cambio de orientación en iOS Safari
- 15. iOS: setFrame ya no funciona desde viewDidLoad o viewWillAppear
- 16. UIApplicationWillEnterForegroundNotification versus viewWillAppear - ¿patrón para la inicialización?
- 17. Diferentes formas de obtener la orientación actual de la interfaz?
- 18. presentViewController no apoyar la orientación en IOS 6
- 19. UISplitViewController y orientación - iOS <5.0
- 20. iOS 6 UITabBarController orientación compatible con el controlador de UINavigation actual
- 21. ios - Pellizcar/acercar con la escala actual
- 22. Deferir viewWillAppear until webViewDidFinishLoad
- 23. iOS: cómo obtener el idioma actual de la aplicación
- 24. viewWillAppear para las subvistas
- 25. Cargar video en Facebook usando FB SDK en iOS, elimina la orientación. ¿Cómo lo arreglo?
- 26. Cuando un dispositivo iOS gira, ¿cómo puedo cambiar la orientación de un solo elemento?
- 27. ¿Detecta si la aplicación (actual) se elimina en iOS?
- 28. Modal View Force del controlador Orientación horizontal en iOS 6
- 29. iPad orientación de lanzamiento cuando está plana en la superficie
- 30. Simular cambios de orientación en iOS con fines de prueba
obsoleto en ios 9 – trickster77777