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

标签 ios objective-c iphone orientation uiinterfaceorientation

免责声明:这不是任何问题的重复。我已经浏览过 this question在此发布之前。

通常我们使用设备方向属性或状态栏属性来找出设备的实际方向。但当设备上启用方向锁定时,我无法获得正确的方向。即使我将设备切换为横向模式,我始终将方向值设置为纵向

设备上启用方向锁定时,是否有办法找出设备的实际方向。

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

最佳答案

这是我的想法:

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");
                                    }
                                    
                            }

}];

关于ios - 启用方向锁定时检测设备的实际方向 (iOS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27718123/

相关文章:

iPhone应用程序内部 "Settings"

ios - 显示键盘时 UITextView ScrollView 不移动

ios - Xcode - 将日期选择器和时间选择器连接到同一个 NSDate

objective-c - 过滤 [NSWorkspace runningApplications] 以仅包含用户应用程序(无守护程序/UIAgents)

objective-c - 如何解决 Swift Package Manager 目标重叠源错误

ios - 静态链接非图片第三方库

iphone - 数组中两点之间的最大距离

ios - 使用 NSSet 类跟踪和限制实例

ios - 用两个字符串过滤字典数组

ios - 特定 UIView 的创建方法