1. UIDeviceOrientation是设备的方向,只能读,不能修改
typedef NS_ENUM(NSInteger, UIDeviceOrientation) {
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
};
2. UIInterfaceOrientation程序界面的方向,可以修改
typedef NS_ENUM(NSInteger, UIInterfaceOrientation) {
UIInterfaceOrientationPortrait = UIDeviceOrientationPortrait,
UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,
UIInterfaceOrientationLandscapeLeft = UIDeviceOrientationLandscapeRight,
UIInterfaceOrientationLandscapeRight = UIDeviceOrientationLandscapeLeft
};
3. landscape 表示横向 portrait 表示纵向
4. 获取设备方向发生的变化,需要注册UIDeviceOrientationDidChangeNotification通知
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleDeviceOrientationDidChange)
name:UIDeviceOrientationDidChangeNotification
object:nil];
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] removeObserver:self
name:UIDeviceOrientationDidChangeNotification
object:nil];
[[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];
5. 识别设备方向的变化
- (BOOL)handleDeviceOrientationDidChange:(UIInterfaceOrientation)interfaceOrientation
{
//宣告一個UIDevice指標,並取得目前Device的方向
UIDevice *device = [UIDevice currentDevice] ;
//取得當前Device的方向,來當作判斷敘述。(Device的方向型態為Integer)
switch (device.orientation) {
case UIDeviceOrientationFaceUp:
NSLog(@"螢幕朝上平躺");
break;
case UIDeviceOrientationFaceDown:
NSLog(@"螢幕朝下平躺");
break;
//系統無法判斷目前Device的方向,有可能是斜置
case UIDeviceOrientationUnknown:
NSLog(@"未知方向");
break;
case UIDeviceOrientationLandscapeLeft:
NSLog(@"螢幕向左橫置");
break;
case UIDeviceOrientationLandscapeRight:
NSLog(@"螢幕向右橫置");
break;
case UIDeviceOrientationPortrait:
NSLog(@"螢幕直立");
break;
case UIDeviceOrientationPortraitUpsideDown:
NSLog(@"螢幕直立,上下顛倒");
break;
default:
NSLog(@"無法辨識");
break;
}
return;
}