color buttons ios uiinterfaceorientation uidevice

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.



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; } } }