有时候我们需要判断应用程序当前的方向,可以通过获取设备当前的方向来确定,从下面的定义你可以看到UIInterfaceOrientation的定义是通过UIDeviceOrientation来完成的,有两个概念:
UIDeviceOrientation:硬件设备的方向
UIInterfaceOrientation:应用程序界面的方向
UIDeviceOrientation的定义如下:
typedef enum { UIDeviceOrientationUnknown, UIDeviceOrientationPortrait, // Device oriented vertically, home button on the bottom UIDeviceOrientationPortraitUpsideDown, // Device oriented vertically, home button on the top UIDeviceOrientationLandscapeLeft, // Device oriented horizontally, home button on the right UIDeviceOrientationLandscapeRight, // Device oriented horizontally, home button on the left UIDeviceOrientationFaceUp, // Device oriented flat, face up UIDeviceOrientationFaceDown // Device oriented flat, face down } UIDeviceOrientation;
UIInterfaceOrientation的定义如下:
typedef enum { UIInterfaceOrientationPortrait = UIDeviceOrientationPortrait, UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown, UIInterfaceOrientationLandscapeLeft = UIDeviceOrientationLandscapeRight, UIInterfaceOrientationLandscapeRight = UIDeviceOrientationLandscapeLeft } UIInterfaceOrientation;
可采用下面的方式来判断当前设备的方向:
UIDevice *device = [UIDevice currentDevice]; switch (device.orientation) { case UIDeviceOrientationUnknown: NSLog(@"Unknown"); break; case UIDeviceOrientationFaceUp: NSLog(@"Device oriented flat, face up"); break; case UIDeviceOrientationFaceDown: NSLog(@"Device oriented flat, face down"); break; case UIDeviceOrientationLandscapeLeft: NSLog(@"Device oriented horizontally, home button on the right"); break; case UIDeviceOrientationLandscapeRight: NSLog(@"Device oriented horizontally, home button on the left"); break; case UIDeviceOrientationPortrait: NSLog(@"Device oriented vertically, home button on the bottom"); break; case UIDeviceOrientationPortraitUpsideDown: NSLog(@"Device oriented vertically, home button on the top"); break; default: NSLog(@"cannot distinguish"); break; }
或者是:
UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation; if (UIDeviceOrientationIsLandscape(deviceOrientation)) NSLog(@"The orientation is landscape"); else if(UIDeviceOrientationIsPortrait(deviceOrientation)) NSLog(@"The orientation is portrait");
UIDeviceOrientationIsLandscape的定义如下:
#define UIDeviceOrientationIsLandscape(orientation) ((orientation) == UIDeviceOrientationLandscapeLeft || (orientation) == UIDeviceOrientationLandscapeRight)
UIDeviceOrientationIsPortrait的定义如下:
#define UIDeviceOrientationIsPortrait(orientation) ((orientation) == UIDeviceOrientationPortrait || (orientation) == UIDeviceOrientationPortraitUpsideDown)
有时候我们只需要知道当前设备是水平还是竖直放置,就可以采用第二种方法。