iOS屏幕旋转总结

一、屏幕旋转检测方法

在特别的场景下,需要针对屏幕旋转作特殊处理。在ios系统下实现相关的功能还是比较方便的。

我下面介绍两种方法:

1、监测状态栏方向

 1 /**
 2  *  当手机屏幕发生左右横屏变化时,我们需根据此时的设备方向做出相应的调整
 3  *  例如,在ViewController中,我们需要监控手机屏幕是否转动了,需要在通知中心中注册通知
 4  */
 5 - (void)viewWillAppear:(BOOL)animated{
 6     [super viewWillAppear:animated];
 7
 8     //注册通知,监测手机屏幕变化
 9     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(statusBarOrientationChange:) name:UIApplicationDidChangeStatusBarOrientationNotification object:nil];
10 }
11
12 /**
13  *  当手机屏幕发生变化时,会回调下面方法
14  */
15 - (void)statusBarOrientationChange:(NSNotification *)notification{
16     UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
17
18     if (orientation == UIInterfaceOrientationLandscapeRight)//home键向右
19     {
20         NSLog(@"home键向右");
21     }
22     if (
23         orientation ==UIInterfaceOrientationLandscapeLeft) // home键靠左
24     {
25         NSLog(@"home键向左");
26     }
27
28     if (orientation == UIInterfaceOrientationPortrait)// home键靠下
29     {
30         NSLog(@"home键靠下");
31     }
32
33     if (orientation == UIInterfaceOrientationPortraitUpsideDown)// home键颠倒
34     {
35         NSLog(@"home键靠颠倒");
36     }
37 }

Debug时我们发现下面这段代码没有被打印

1 if (orientation == UIInterfaceOrientationPortraitUpsideDown)// home键颠倒
2     {
3         NSLog(@"home键靠颠倒");
4     }

这是因为这种方式监听的是StatusBar也就是状态栏的方向,所以这个是跟你的布局有关的,你的布局转了,才会接到这个通知,而不是设备旋转的通知。

当我们关注的东西和布局相关而不是纯粹设备旋转,我们使用上面的代码作为实现方案比较适合。

2、监控设备物理方向

 1 - (void)viewWillAppear:(BOOL)animated{
 2     [super viewWillAppear:animated];
 3
 4     //注册通知 监测设备方向的变化
 5     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientChange:) name:UIDeviceOrientationDidChangeNotification object:nil];
 6
 7 }
 8
 9 //当设备的物理方向发生变化时会调
10 - (void)orientChange:(NSNotification *)noti{
11
12     NSDictionary* ntfDict = [noti userInfo];
13
14     UIDeviceOrientation  orient = [UIDevice currentDevice].orientation;
15
16     switch (orient)
17     {
18         case UIDeviceOrientationPortrait:
19             NSLog(@"home靠下");
20             break;
21         case UIDeviceOrientationLandscapeLeft:
22             NSLog(@"home靠右边");
23
24             break;
25         case UIDeviceOrientationPortraitUpsideDown:
26             NSLog(@"home靠上");
27             break;
28         case UIDeviceOrientationLandscapeRight:
29             NSLog(@"home靠左边");
30             break;
31
32         default:
33             break;
34     }
35 }
时间: 2024-10-07 23:01:33

iOS屏幕旋转总结的相关文章

iOS屏幕旋转方向的相关方法

在iOS应用开发过程中,经常会遇到设置屏幕方向,或者根据屏幕方向改变界面的时候,所以现在就来说一下屏幕方向的那些事情. 关于方向,经常会遇到以下的两个对象: 1.UIDeviceOrientation(机器设备的方向) ================================== UIDeviceOrientationUnknown //未知方向 UIDeviceOrientationPortrait, //设备直立,home按钮在下 UIDeviceOrientationPortrai

关于IOS屏幕旋转的几个问题1.常规设置2.个别页面强制固定横竖屏

1.常规设置屏幕旋转  (Device Orientation || info.plist-----这两个地方的设置是同步的) 1)targets->General->Deployment Info->Device Orientation  直接勾选想要的设备定位全局属性 2)Supporting Files->Info.plist->Supported interface orientations 增删属性值 2.个别页面强制横竖屏 新建一个NavigationContro

iOS 屏幕旋转

在项目文件中的General??Deployment??Device Orientaion??checkbox进行设置,portrait选上,其他的不选,就将旋转关闭了 附图:

IOS屏幕旋转

//在iOS5.1 和 之前的版本中, 我们通常利用 shouldAutorotateToInterfaceOrientation: 来单独控制某个UIViewController的旋屏方向支持 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {     return UIInterfaceOrientationIsLandscape(toInterface

屏幕旋转学习笔记

加速计是整个IOS屏幕旋转的基础,依赖加速计,设备才可以判断出当前的设备方向,IOS系统共定义了以下七种设备方向: typedef NS_ENUM(NSInteger, UIDeviceOrientation) {     UIDeviceOrientationUnknown,     UIDeviceOrientationPortrait,            // Device oriented vertically, home button on the bottom     UIDev

ios(ipad,iphone)屏幕旋转检测通用方法

在特别的场景下,需要针对屏幕旋转作特殊处理.在ios系统下实现相关的功能还是比较方便的. 我下面介绍两种方法: 1.注册UIApplicationDidChangeStatusBarOrientationNotification通知(举例:在一个viewcontroller类的viewdidload中注册该通知),示例代码如下: [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(statusBarO

iOS学习笔记(3)— 屏幕旋转

iOS学习笔记(3)— 屏幕旋转 一.屏幕旋转机制: iOS通过加速计判断当前的设备方向和屏幕旋转.当加速计检测到方向变化的时候,屏幕旋转的流程如下: 1.设备旋转时,系统接收到旋转事件. 2.系统将旋转事件通过AppDelegate通知当前的主Window. 3.window通知它的rootViewController. 4.rootViewController判断所支持的旋转方向,完成旋转. iOS系统中屏幕旋转事件没有像触碰事件那样进行hitTest,所以只有rootViewControl

IOS UIDevice & IOS检测屏幕旋转实例

一 UIDevice 简介 UIDevice类提供了一个单例实例代表当前的设备.从这个实例中可以获得的信息设备,比如操作系统名称.电池电量值(batteryLevel).电池状态(batteryState).设备的类型(model,比如iPod.iPhone等).设备的系统(systemVersion) 二 获取 UIDevice 实例 通过[UIDevice currentDevice]可以获取这个单粒对象 UIDevice *device = [UIDevice currentDevice]

ios实现屏幕旋转的方法

1.屏蔽AppDelegate下面的屏幕旋转方法 #pragma mark - 屏幕旋转的 //- (UIInterfaceOrientationMask)application:(UIApplication*)application supportedInterfaceOrientationsForWindow:(UIWindow*)window //{ // return UIInterfaceOrientationMaskPortrait; //} 2.对UINavigationContr