iOS获取设备方向(锁屏状态下通用)

在iOS中,当设备未锁定且能旋转时,可通过`UIDevice`获取设备方向;但在设备锁定或不能旋转时,需利用`CMMotionManager`的加速度传感器数据来计算设备方向,如根据加速度判断`LandscapeRight`、`LandscapeLeft`、`Portrait`和`PortraitUpsideDown`等不同方向。

1.设备没有锁屏(不能旋转屏幕)的状态下:

UIDevice *device = [UIDevice currentDevice];

但是当设备不能旋转的时候,此方法就不能获取到设备方向了。

2. 当设备不能旋转的时候,我们可以通过CMMotionManager类来计算设备的方向:

@property(nonatomic,strong)CMMotionManager  *cmmotionManager;

    if([self.cmmotionManager isDeviceMotionAvailable]) {

        [self.cmmotionManager startAccelerometerUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^(CMAccelerometerData * _Nullable accelerometerData, NSError * _Nullable error) {

            AVCaptureVideoOrientation orientationNew;

            if (acceleration.x >= 0.75) {//home button left

                orientationNew = UIDeviceOrientationLandscapeRight;

            }

            else if (acceleration.x <= -0.75) {//home button right

                orientationNew = UIDeviceOrientationLandscapeLeft;

            }

            else if (acceleration.y <= -0.75) {

                orientationNew = UIDeviceOrientationPortrait;

            }

            else if (acceleration.y >= 0.75) {

                orientationNew = UIDeviceOrientationPortraitUpsideDown;

            }

            else {

                // Consider same as last time

                return;

            }

            

        }];

    }




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值