ios - buttons - ¿Cómo tratar con UIDeviceOrientationFaceUp y UIDeviceOrientationFaceDown?
ionic text (4)
Una pregunta noob aquí.
Detecto la orientación con:
UIInterfaceOrientation orientation = [[UIDevice currentDevice] orientation];
todo está bien y excelente y reposiciono mis campos de texto y etiquetas de acuerdo con la orientación informada con
if (orientation == UIDeviceOrientationPortrait || orientation == UIDeviceOrientationPortraitUpsideDown)
y otra cosa {} para todo lo demás
El problema que UIDevice
descubrir recientemente es cuando UIDevice
informa UIDeviceOrientationFaceUp
o UIDeviceOrientationFaceDown
. ¿Cómo trato con esta situación? ¿Cómo puedo saber si UIDeviceOrientationFaceUp
y UIDeviceOrientationFaceDown
están sucediendo en vertical u UIDeviceOrientationFaceDown
? Sé que el dispositivo está hacia arriba o hacia abajo, pero no sé si debo reposicionar todo a Vertical u Horizontal.
¡gracias!
Apple recomienda no usar la orientación del dispositivo para el diseño de vista. En su lugar, cada controlador de vista tiene una propiedad interfaceOrientation , y UIApplication
tiene una propiedad statusBarOrientation , las cuales devolverán la orientación de la interfaz actual, que es adecuada para el diseño de la vista.
Para monitorear los cambios, existen métodos UIViewController
como willRotateToInterfaceOrientation:duration: se UIApplicationWillChangeStatusBarOrientationNotification y notificaciones como UIApplicationWillChangeStatusBarOrientationNotification que se publicarán cuando ocurra un cambio de orientación de la interfaz.
Esta publicación del blog aquí: http://blogs.remobjects.com/blogs/mh/2010/06/29/p1685 explica muy bien.
Tengo los mismos problemas con
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
Este método genera notificaciones para 7 posibles estados posicionales del dispositivo:
UIDeviceOrientationPortrait
UIDeviceOrientationPortraitUpsideDown
UIDeviceOrientationLandscapeLeft
UIDeviceOrientationLandscapeRight
UIDeviceOrientationFaceUp
UIDeviceOrientationFaceDown
UIDeviceOrientationUnknown
Pero solo necesito los primeros 4, bueno, este es mi enfoque para resolver este problema (con el código incluido): cómo manejar UIDeviceOrientation para administrar diseños de vistas
Un poco tarde, espero que ayude a alguien.
Para iOS 6.0 y versiones posteriores:
1) Establezca este código durante su configuración de visualización para recibir una notificación de rotación:
// Set Listener to receive orientation notifications from the device
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(detectOrientation)
name:UIDeviceOrientationDidChangeNotification
object:nil];
2) Establezca este código para capturar la Notificación después de la rotación:
-(void)detectOrientation{
switch ([[UIDevice currentDevice] orientation]) {
case UIDeviceOrientationFaceDown:{
NSLog(@"UIDeviceOrientationFaceDown");
break;
}
case UIDeviceOrientationFaceUp:{
NSLog(@"UIDeviceOrientationFaceUp");
break;
}
case UIDeviceOrientationLandscapeLeft:{
NSLog(@"UIDeviceOrientationLandscapeLeft");
break;
}
case UIDeviceOrientationLandscapeRight:{
NSLog(@"UIDeviceOrientationLandscapeRight");
break;
}
case UIDeviceOrientationPortrait:{
NSLog(@"UIDeviceOrientationPortrait");
break;
}
case UIDeviceOrientationPortraitUpsideDown:{
NSLog(@"UIDeviceOrientationPortraitUpsideDown");
break;
}
case UIDeviceOrientationUnknown:{
NSLog(@"UIDeviceOrientationUnknown");
break;
}
default:{
break;
}
}
}