【问题标题】:How to get portrait orientation lock from device setting programmatically如何以编程方式从设备设置中获取纵向锁定
【发布时间】:2015-07-02 17:14:42
【问题描述】:

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

【问题讨论】:

标签: ios setting


【解决方案1】:

没有 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 相同。

如果它们不同,则方向锁定处于打开状态。 如果它们相同,则不能假定它是打开还是关闭。

【讨论】:

  • 啊,但如果不是,那可能没关系!
猜你喜欢
  • 1970-01-01
  • 2015-01-23
  • 1970-01-01
  • 2011-05-31
  • 1970-01-01
  • 1970-01-01
  • 2011-12-19
  • 2023-04-05
相关资源
最近更新 更多