简体   繁体   中英

Determining the Orientation of the screen rather than the orientation of the device

The [[UIDevice currentDevice] orientation] method returns a number of orientations beyond the portrait and landscape orientation. I am well aware of checking to see if the orientation returned is "valid", unfortunately if the orientation returned is NOT "valid" when my app requires a specific orientation to determine which methods to run, I have no way of knowing which method is appropriate.

I have attempted a number of solutions to this, but for now the only thing I have been able to work out is to check to see if the orientation is LandscapeLeft or LandscapeRight and if it isn't I assume the screen is in portrait orientation. Unfortunately this isn't true when the device is face up and the screen is in landscape orientation.

I attempted to use the parent view controller's orientation:

parentController.interfaceOrientation;

Unfortunately it returned UIDeviceOrientationUnknown . I search SO and Google for someone else who has faced this problem. It seems silly to me that Apple would have anything but LandscapeLeft/Right and PortraitUp/Down for their orientations.

What I really need is the APPS orientation not the devices, since these are sometimes at odds. Any advice?

Have you tried using UIInterfaceOrientationPortrait / UIInterfaceOrientationLandscape ? I usually have pretty good results using these methods:

if(UIInterfaceOrientationIsPortrait(viewController.interfaceOrientation)) {
    //do portrait work
} else if(UIInterfaceOrientationIsLandscape(viewController.interfaceOrientation)){
    //do landscape work
}

You might also try UIDeviceOrientationIsValidInterfaceOrientation .

These will only return the app's orientation, which may not be the same as the device's orientation.

If those don't work, you can also try:

[[UIApplication sharedApplication] statusBarOrientation]

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM