【发布时间】:2015-07-02 17:14:42
【问题描述】:
我需要以编程方式了解设备设置中的“纵向锁定”选项是否已设置。任何帮助将不胜感激。
【问题讨论】:
我需要以编程方式了解设备设置中的“纵向锁定”选项是否已设置。任何帮助将不胜感激。
【问题讨论】:
没有 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 相同。
如果它们不同,则方向锁定处于打开状态。 如果它们相同,则不能假定它是打开还是关闭。
【讨论】: