iOS监听横竖屛通知

原创 2016年06月01日 22:04:15

UIDeviceOrientationDidChangeNotification和UIApplicationDidChangeStatusBarFrameNotification的区别

相同点:UIDeviceOrientationDidChangeNotification和UIApplicationDidChangeStatusBarFrameNotification一样可以监听手机是否横竖屏。
区别: 当全局禁掉自动旋转屏幕的功能后,手机旋转UIApplicationDidChangeStatusBarFrameNotification不会再发出通知。但UIDeviceOrientationDidChangeNotification会发出通知,无论是否支持横竖屏,都会发出通知。这样可以方便的处理横屏后的页面显示问题。
1.注册通知

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(changeRotate:) name:UIApplicationDidChangeStatusBarFrameNotification object:nil];
- (void)changeRotate:(NSNotification*)noti {
    if ([[UIDevice currentDevice] orientation] == UIInterfaceOrientationPortrait
        || [[UIDevice currentDevice] orientation] == UIInterfaceOrientationPortraitUpsideDown) {
        //竖屏
        NSLog(@"竖屏");
    } else {
        //横屏
         NSLog(@"横屏");
    }
}

2.两者在监听的方向的多少有区别
UIApplicationDidChangeStatusBarFrameNotification常见的几种情况:

UIDeviceOrientationPortrait  
UIDeviceOrientationPortraitUpsideDown  
UIDeviceOrientationLandscapeLeft  
UIDeviceOrientationLandscapeRight 

UIDeviceOrientationDidChangeNotification

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; 

单页面需要横屏

//在UIApplication实现该方法
- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
    if(self.isFull){

        return UIInterfaceOrientationMaskAll;
    }
    return UIInterfaceOrientationMaskPortrait;

}

在需要支持横屏的页面修改isFull的值,并重写方法

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(changeRotate:) name:UIApplicationDidChangeStatusBarFrameNotification object:nil];
    AppDelegate * appDelegate = [[UIApplication sharedApplication] delegate];
    appDelegate.isFull = YES;

 // 支持设备自动旋转
- (BOOL)shouldAutorotate
{
    return YES;
}
// 支持横竖屏显示
-(UIInterfaceOrientationMask)supportedInterfaceOrientations{
    return UIInterfaceOrientationMaskAll;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS 横竖屏监听通知

iOS横竖屏通知有两种,一种监听设备横竖屏状态,另一种监听状态栏横竖屏状态。与布局有关一般使用第二种,因为如果一个viewcontroller不支持自动旋转,当设备由竖屏转横屏时依然会执行监听设备横竖...

代码处理 iOS 的横竖屏旋转

一、监听屏幕旋转方向 在处理iOS横竖屏时,经常会和UIDeviceOrientation、UIInterfaceOrientation和UIInterfaceOrientationMask这三个枚...

JS监听横竖屏切换

(function(){ var init = function(){ var updateOrientation = function(){//方向改变执行的函数 var orie...

iOS监听屏幕旋转的几种方法

通过控制器得到 //获取将要旋转的状态 -(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrien...

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

在特别的场景下,需要针对屏幕旋转作特殊处理。在ios系统下实现相关的功能还是比较方便的。 我下面介绍两种方法: 1.注册UIApplicationDidChangeStatusBarOrienta...

监听iOS检测屏幕旋转状态,不需开启屏幕旋转

-(void)rotation_icon:(float)n { UIButton *history_btn= [self.view viewWithTag:][self.view viewWit...
  • linqir
  • linqir
  • 2014年02月27日 14:26
  • 8204

[iOS]监控屏幕旋转

[iOS]监控屏幕旋转 - (void)viewDidLoad { [super viewDidLoad]; //设备旋转通知 [[UIDevice current...

iOS屏幕旋转详解

屏幕旋转学习笔记     加速计是整个IOS屏幕旋转的基础,依赖加速计,设备才可以判断出当前的设备方向,IOS系统共定义了以下七种设备方向: typedef NS_ENUM(NSIn...
  • Erice_e
  • Erice_e
  • 2017年09月28日 10:24
  • 112

js监听移动端是否横竖屏

手机横、竖屏事件 //屏幕方向标识,0横屏,其他值竖屏 var orientation=0; //转屏事件,内部功能可以自定义 function screenOrientationEvent(){...
  • gtd03
  • gtd03
  • 2015年03月25日 10:55
  • 1540

IOS - 判断手机屏幕旋转

1.首先要监听屏幕旋转NotificationCenter.default.addObserver(self, selector: #selector(self.printOrientation(no...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS监听横竖屛通知
举报原因:
原因补充:

(最多只允许输入30个字)