I got this code that if the device is in landscape left/right or upside down it rotates and shows another view controller. but if it´s in the orientation face up or face down, then how can I tell if it´s in landscape mode or portrait? cause I only want to rotate if it´s face up or down and in landscape mode
- (void)viewDidAppear:(BOOL)animated
{
UIDeviceOrientation orientation = [[UIDevice currentDevice]orientation];
NSLog(@"orientation %d", orientation);
if ((orientation == 2) || (orientation == 3) || (orientation == 4))
{
[self performSegueWithIdentifier:@"DisplayLandscapeView" sender:self];
isShowingLandscapeView = YES;
}
}
The
interfaceOrientation
property is deprecated since iOS 8. And the helpers methodswon't help either, because they return false when orientation is
.faceUp
.So I ended checking this way:
This is in a UIViewController extension, so I can revert to comparing the screen width and height if everything else fails.
I use
window
because if the current ViewController is embedded in a container, it may not reflect the global iPad orientation.In UI code you usually should not depend on the device orientation but the user interface orientation. There's often a difference between them, for example when a view controller only supports portrait.
The most important difference for your case is that the interface orientation is never face up/down.
In your case you can just ask the view controller for the current user interface orientation:
self.interfaceOrientation
.Your condition could be expressed somewhat like
if (deviceOrientation is face up/down and interfaceOrientation is landscape)
Bear in mind that a device orientation landscape left means a user interface orientation landscape right.
Yes you can, the
UIDeviceOrientation
is an enum which contains:There are even two helpers:
Just cmd on
UIDeviceOrientation
to show the headerfile where the enum is declared.There is one way to check it.
Use the first one to check if the device is in faceup and second one will tell you if the device is in portrait or landscape.