2015-04-24 5 views
-2

Мне нужно знать программно, если была установлена ​​опция «блокировка портретной ориентации» из настроек устройства. любая помощь будет оценена по достоинству.Как получить автоматическую блокировку книжной ориентации от установки устройства

+0

Возможный дубликат http://stackoverflow.com/questions/5410763/detect-ios-device-orientation-lock –

ответ

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.

Если они разные, тогда включена блокировка ориентации. Если они одинаковы, вы не можете предположить, что это либо включено, либо выключено.

+1

50% времени, это правильно каждый раз – RyanR

+0

Ах, но когда это не так, это важно! –