启用方向锁定时检测设备的实际方向(iOS)

时间:2014-12-31 08:07:18

标签: ios objective-c iphone orientation uiinterfaceorientation

免责声明:这不是任何问题的重复。我在发布此帖之前已经完成了this question

通常我们使用设备方向属性或状态栏属性来查找设备的实际方向。但是,当设备上启用 方向锁定 时,我无法获得正确的方向。我总是将方向值设为 人像 ,即使我将设备转为横向模式。

在设备上启用方向锁定时,是否可以找到设备的实际方向。

注意:UIAccelerometer现已弃用。欢迎任何有关CoreMotion的帮助。

1 个答案:

答案 0 :(得分:3)

以下是我提出的建议:

CMMotionManager *cm=[[CMMotionManager alloc] init];
cm.deviceMotionUpdateInterval=0.2f;
[cm startDeviceMotionUpdatesToQueue:[NSOperationQueue mainQueue]
                        withHandler:^(CMDeviceMotion *data, NSError *error) {

                                if(fabs(data.gravity.x)>fabs(data.gravity.y)){
                                        NSLog(@"LANSCAPE");
                                    if(data.gravity.x>=0){
                                        NSLog(@"LEFT");
                                    }
                                    else{
                                        NSLog(@"RIGHT");
                                    }

                            }
                            else{
                                    if(data.gravity.y>=0){
                                        NSLog(@"DOWN");
                                    }
                                    else{

                                        NSLog(@"UP");
                                    }

                                }

}];