如何以编程方式从设备设置中获取纵向锁定

时间:2015-04-24 07:52:42

标签: ios setting

我需要以编程方式了解是否"纵向定位锁定"已设置设备设置选项。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

没有API可以告诉您方向锁是否已打开,但是,您可以推断它。

您需要做的第一件事是使用加速度计来确定设备的保持方式:

CMMotionManager * motionManager = [[CMMotionManager alloc] init];
motionManager.accelerometerUpdateInterval = 0.5;

[motionManager startAccelerometerUpdatesToQueue: [[NSOperationQueue alloc] init]
                                    withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
                                        CMAcceleration acceleration = accelerometerData.acceleration;

                                        UIDeviceOrientation orientation = fabs(acceleration.y) < fabs(acceleration.x) ?
                                        acceleration.x > 0 ? UIDeviceOrientationLandscapeRight  :   UIDeviceOrientationLandscapeLeft :
                                        acceleration.y > 0 ? UIDeviceOrientationPortraitUpsideDown : UIDeviceOrientationPortrait;

                  // Check orientation == [UIDevice currentDevice].orientation

                                         }];

然后检查您计算的方向是否与当前UIDeviceOrientation相同。

如果它们不同,则打开方向锁定。 如果它们是相同的,你不能认为它是打开还是关闭。