UIInterfaceOrientation

UIInterfaceOrientation

我正在尝试捕获UIInterfaceOrientation更改的时间。我知道如何使用UIDeviceOrientation做到这一点,但我想防止除左/右风景和肖像外的其他事物。

我当时使用的是UIDeviceOrientation,但每次将其面朝上放置时,一切都会在我的应用程序上发疯。

所以我想知道如何做这样的事情

UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];

        UIInterfaceOrientation interfaceOrientation = [[UIApplication sharedApplication] statusBarOrientation];


        CGFloat screenHeight = [[UIScreen mainScreen] bounds].size.height;

        CGFloat screenWidth = [[UIScreen mainScreen] bounds].size.width;

if (interfaceOrientation landscape) {
            if (orientation == UIDeviceOrientationLandscapeLeft)
            {

             }
             else if (orientation == UIDeviceOrientationLandscapeRight)
            {

             }
      }

if (interfaceOrientation Portrait) {


}


所以我只看风景或肖像。

任何帮助将不胜感激。

最佳答案

if (UIInterfaceOrientationIsLandscape(interfaceOrientation)) {

}


这是C函数,而不是目标C函数。

UIInterfaceOrientation是一个枚举。

另一个选择是:

if (interfaceOrientation & (UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight)) {

}


从UIApplication.h标头中:

// Note that UIInterfaceOrientationLandscapeLeft is equal to UIDeviceOrientationLandscapeRight (and vice versa).
// This is because rotating the device to the left requires rotating the content to the right.
typedef NS_ENUM(NSInteger, UIInterfaceOrientation) {
    UIInterfaceOrientationUnknown            = UIDeviceOrientationUnknown,
    UIInterfaceOrientationPortrait           = UIDeviceOrientationPortrait,
    UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,
    UIInterfaceOrientationLandscapeLeft      = UIDeviceOrientationLandscapeRight,
    UIInterfaceOrientationLandscapeRight     = UIDeviceOrientationLandscapeLeft
};

/* This exception is raised if supportedInterfaceOrientations returns 0, or if preferredInterfaceOrientationForPresentation
   returns an orientation that is not supported.
*/
UIKIT_EXTERN NSString *const UIApplicationInvalidInterfaceOrientationException NS_AVAILABLE_IOS(6_0);

typedef NS_OPTIONS(NSUInteger, UIInterfaceOrientationMask) {
    UIInterfaceOrientationMaskPortrait = (1 << UIInterfaceOrientationPortrait),
    UIInterfaceOrientationMaskLandscapeLeft = (1 << UIInterfaceOrientationLandscapeLeft),
    UIInterfaceOrientationMaskLandscapeRight = (1 << UIInterfaceOrientationLandscapeRight),
    UIInterfaceOrientationMaskPortraitUpsideDown = (1 << UIInterfaceOrientationPortraitUpsideDown),
    UIInterfaceOrientationMaskLandscape = (UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight),
    UIInterfaceOrientationMaskAll = (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskPortraitUpsideDown),
    UIInterfaceOrientationMaskAllButUpsideDown = (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight),
};

关于ios - 如何获取设备的UIInterfaceOrientation,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19150291/

10-09 16:16