tutoriales retrato pinturas parecido montero hangel consigue conseguir como iphone cocoa-touch ipad landscape-portrait uideviceorientation

iphone - pinturas - UIDeviceOrientationFaceUp: ¿cómo distinguir entre retrato y paisaje?



hangel montero tutoriales (2)

Hago este código esqueleto para tratar con orientaciones de dispositivos deseados y no deseados, en mi caso, quiero ignorar UIDeviceOrientationUnknown, UIDeviceOrientationFaceUp y UIDeviceOrientationFaceDown, guardando en caché la última orientación permitida. Este código trata de dispositivos iPhone y iPad y puede ser útil para usted.

- (void)modXibFromRotation { UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation]; NSString *device = [[UIDevice currentDevice]localizedModel]; UIInterfaceOrientation cachedOrientation = [self interfaceOrientation]; if ([device isEqualToString:@"iPad"]) { if (orientation == UIDeviceOrientationUnknown || orientation == UIDeviceOrientationFaceUp || orientation == UIDeviceOrientationFaceDown) { orientation = (UIDeviceOrientation)cachedOrientation; } if (orientation == UIDeviceOrientationLandscapeLeft || orientation == UIDeviceOrientationLandscapeRight) { /* Your code */ } if (orientation == UIDeviceOrientationPortrait || orientation == UIDeviceOrientationPortraitUpsideDown) { /* Your code */ } } if ([device isEqualToString:@"iPhone"] || [device isEqualToString:@"iPod"]) { if (orientation == UIDeviceOrientationUnknown || orientation == UIDeviceOrientationFaceUp || orientation == UIDeviceOrientationFaceDown) { orientation = (UIDeviceOrientation)cachedOrientation; } if (orientation == UIDeviceOrientationLandscapeLeft || orientation == UIDeviceOrientationLandscapeRight) { /* Your code */ } if (orientation == UIDeviceOrientationPortrait || orientation == UIDeviceOrientationPortraitUpsideDown) { /* Your code */ } } }

Estoy intentando averiguar si el dispositivo está en modo vertical u horizontal. Mi código funciona bastante bien si el dispositivo no está hacia arriba. Si lo hace boca arriba (y orientación == 5), no distinguirá entre retrato y paisaje. ¿Hay alguna forma de determinar la "orientación" en términos de paisaje / retrato si la UIDeviceOrientation es FaceUp?

Mi código:

UIDeviceOrientation interfaceOrientation = [[UIDevice currentDevice] orientation]; NSLog(@"orientation: %d", interfaceOrientation); if (interfaceOrientation == UIDeviceOrientationIsLandscape(interfaceOrientation)) { NSLog(@"LANDSCAPE!!!"); } if (interfaceOrientation == UIDeviceOrientationIsPortrait(interfaceOrientation)) { NSLog(@"PORTRAIT!!!"); }


No debe confundir UIDeviceOrientation y UIInterfaceOrientation , son diferentes pero están relacionados como se muestra en su declaración.

typedef enum { UIDeviceOrientationUnknown, UIDeviceOrientationPortrait, UIDeviceOrientationPortraitUpsideDown, UIDeviceOrientationLandscapeLeft, UIDeviceOrientationLandscapeRight, UIDeviceOrientationFaceUp, UIDeviceOrientationFaceDown } UIDeviceOrientation; typedef enum { UIInterfaceOrientationPortrait = UIDeviceOrientationPortrait, UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown, UIInterfaceOrientationLandscapeLeft = UIDeviceOrientationLandscapeRight, UIInterfaceOrientationLandscapeRight = UIDeviceOrientationLandscapeLeft } UIInterfaceOrientation;

UIDeviceOrientation le indica cuál es la orientación del dispositivo. UIInterfaceOrientation le informa cuál es la orientación de su interfaz y lo utiliza UIViewController . UIInterfaceOrientation será claramente vertical u horizontal, mientras que UIDeviceOrientation puede tener valores ambiguos ( UIDeviceOrientationFaceUp , UIDeviceOrientationFaceDown , UIDeviceOrientationUnknown ).

En cualquier caso, no debe intentar determinar la orientación de un UIViewController con [[UIDevice currentDevice] orientation] , ya que no importa cuál sea la orientación del dispositivo, la propiedad UIViewController interfaceOrientation puede ser diferente (por ejemplo, si su aplicación no gira a horizontal). toda la [[UIDevice currentDevice] orientation] puede ser UIDeviceOrientationLandscapeLeft mientras que viewController.interfaceOrientation puede ser UIInterfaceOrientationPortrait ).

Actualización: a partir de iOS 8.0, [UIViewController interfaceOrientation] está en desuso. Una alternativa ofrecida here es [[UIApplication sharedApplication] statusBarOrientation] . Esto también devuelve UIInterfaceOrientation .