Мне нужно знать программно, если была установлена опция «блокировка портретной ориентации» из настроек устройства. любая помощь будет оценена по достоинству.Как получить автоматическую блокировку книжной ориентации от установки устройства
ответ
Нет никакого 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
.
Если они разные, тогда включена блокировка ориентации. Если они одинаковы, вы не можете предположить, что это либо включено, либо выключено.
50% времени, это правильно каждый раз – RyanR
Ах, но когда это не так, это важно! –
Возможный дубликат http://stackoverflow.com/questions/5410763/detect-ios-device-orientation-lock –