我有一个游戏,其中设备的方向会影响游戏的状态.用户必须在横向、纵向和反向横向方向之间快速切换.到目前为止,我一直在通过以下方式注册游戏以获取定向通知:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

但它太慢了——在旋转手机和实际发出通知之间似乎有大约一秒钟的延迟.我需要一种方法来即时检测设备方向的变化.我try 过使用陀螺仪,但对它还不够熟悉,不知道它是否是我正在寻找的解决方案.

推荐答案

你所说的delay实际上是一个过滤器,可以防止错误(不需要的)方向改变通知.

对于instant个设备方向变化的识别,你只需要自己监控加速计.

加速计测量所有三个轴的加速度(包括重力),所以在计算实际方向时不会有任何问题.

以下是一些开始使用加速计的代码:

How to make an iPhone App – Part 5: The Accelerometer

这个不错的博客涵盖了数学部分:

Using the Accelerometer

Objective-c相关问答推荐

恢复 iOS7 之前的 UINavigationController pushViewController 动画

将 NSArray 保存到 NSUserDefaults 并在 NSMutableArray 中获取它

NSBundle pathForResource 为 NULL

如何声明仅调试语句

iOS 块和对自身的强/弱引用

在 UITableViewCells 上显示复制弹出窗口的简单方法,如地址簿应用程序

didReceiveRemoteNotification:当应用程序处于后台并且未连接到Xcode时未调用fetchCompletionHandler

dispatch_semaphore_dispose 上的 EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码=0x0)

Objective C 静态类变量

如何删除应用程序指定目录中的所有文件?

类在两者中都实现.将使用两者之一

iOS - 从应用程序获取 CPU 使用率

如何在 Objective-C 中创建静态方法?

如何编写 OS X Finder 插件

从 NSMutableString 中删除最后一个字符

如何在嵌入 UIViewController 的 UITableView 中直观地创建和使用静态单元格

使用 NSLog 打印 NSData

Objective-C 异常

判断文件是否存在于路径中

更改导航栏的字体