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;
}
本文详细介绍了iOS设备的方向(UIDeviceOrientation)及其变化如何影响界面方向(UIInterfaceOrientation),并阐述了如何通过注册通知来识别这些变化。通过实例代码展示了如何在应用中实时响应设备方向的调整。
3590

被折叠的 条评论
为什么被折叠?



