iOS开发 - 适应iOS13之屏幕旋转

用Xcode11打开一个工程,发现原来检测屏幕旋转的方法,已经出现告警,被禁用了。IOS13的坑还真是不少,还是改吧!

按照警告的提示。屏幕旋转使用以下方法,为省事,就用最简单的屏幕宽高,来判断横屏还是竖屏,但有两个小坑需要注意。

 

注意:首先定义一对全局变量,screenWidth和screenHeight。没用过约束,一般都用屏幕尺寸来调整控件位置,个人的习惯。

 

(1)在模拟器启动时,用UIDeviceOrientation的方法,获得的状态总是:UIInterfaceOrientationUnknown,也就是在刚刚启动App时,无法获得屏幕状态,检测旋转的方法也不会调用。为此,在viewDidAppear中进行检测。

(2)屏幕旋转调用的方法viewWillTransitionToSize:(CGSize)size,其中size是屏幕旋转后的size,所以,要调整屏幕控件的位置,需要用到屏幕的尺寸,就需要在这里给screenWidth和screenHeight赋值,后面再按这个尺寸处理就行了。

 

#pragma mark -

#pragma mark  启动时检测屏幕方向,第1个坑。

- (void)viewDidAppear:(BOOL)animated {

    //获取屏幕尺寸

    screenWidth = [[UIScreen mainScreen] bounds].size.width;

    screenHeight = [[UIScreen mainScreen] bounds].size.height;

    //启动时检测屏幕方向

    //用宽度与高度比较

    if ((screenWidth-screenHeight)>0) {

        //横屏

        //your code here

    }

    else {

        //竖屏

        //your code here

    }

}

 

#pragma mark -

#pragma mark  屏幕翻转自动调用,但在模拟器首次启动时,该方法不会被调用,真机上没测试,有兴趣的自己测

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {

    //

    [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];

     /*The orientation of the phone will changing*/

 

    //size的尺寸是将要转向的尺寸,第2个坑。

    screenWidth = size.width;

    screenHeight = size.height;

 

    //用宽度与高度比较

    if ((screenWidth-screenHeight)>0) {

       //横屏

       //your code here

    }

    else {

        //竖屏

        //your code here

    }

      //Other code here    

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值