UIMotionEffect 和 CoreMotion 有何不同?

Posted

技术标签:

【中文标题】UIMotionEffect 和 CoreMotion 有何不同?【英文标题】:How are UIMotionEffect and CoreMotion different? 【发布时间】:2018-12-19 07:55:08 【问题描述】:

我非常享受使用UIMotionEffect 子类取得的一些比听CMMotionManager 更好的结果。使用CoreMotion 通常会导致不准确,因为也看到许多人通过网络抱怨它。

我找不到任何解释,尽管它们有什么不同,在使用哪些传感器方面,或者在这些传感器的输出上使用了什么操作来解释我遇到的不同结果。

UIMotionEffect 来自 Apple: https://developer.apple.com/documentation/uikit/uimotioneffect

CMMotionManager 来自 Apple: https://developer.apple.com/documentation/coremotion/cmmotionmanager

虽然很明显CMMotionManager 为您提供了更多功能,例如陀螺仪、加速等等,但我主要询问的是滚动/俯仰,我可以从覆盖 UIOffset 或从覆盖 UIMotionEffect 获得它CMDeviceMotion.attitude

【问题讨论】:

【参考方案1】:

这可能不是问这个问题的正确地方,但我会尽力回答你。

CoreMotion 是一个 API,用于访问来自加速度计、陀螺仪、磁力计和其他更高级别指标的传感器的原始值。它可以配置不同的更新配置文件(从非常高的刷新率到经济、省电的刷新率)。

使用UIMotionEffect,您可以沿设备的水平轴和垂直轴旋转移动/动画视图。它主要用于创建视差效果,例如在跳板上移动的背景(主屏幕)。你还必须继承这个类或者使用已经创建的UIInterpolatingMotionEffect

UIMotionEffect 旨在为您的 UI 提供快速、微妙的效果,并且可以开箱即用,能耗小,而 CoreMotion 更适合在具有运动控制的游戏中使用密集的陀螺仪。

哦,UIMotionEffect 是永久居中的视图,所以当你旋转手机并站在一边不动时,它会轻轻滑回中心以匹配你的新位置,在游戏中不太有用。

【讨论】:

谢谢。我很想听听您在 UIMotionEffect 上配置更新配置文件的方式。我找了类似的东西,但找不到它 @Eyzuky 看了之后,看来你是对的,UIMotionEffect 似乎无法配置。我很确定我已经这样做了。我将编辑我的答案。 太好了,感谢您的调查。我希望他们让我们将来配置它 我猜它的设计目的是对电池寿命的影响最小。我认为他们不会。 我很想看到一个暂停选项,或者我可以自己控制的重新定位功能..这可能不会影响电池

以上是关于UIMotionEffect 和 CoreMotion 有何不同?的主要内容,如果未能解决你的问题,请参考以下文章

使用 UIMotionEffect 类在 IOS 6 中启动应用程序时崩溃

ios中陀螺仪CoreMotion的用法

通过蓝牙将实时加速度计数据从 WatchOS 共享到 iOS 应用程序

& 和 && 区别和联系,| 和 || 区别和联系

第三十一节:扫盲并发和并行同步和异步进程和线程阻塞和非阻塞响应和吞吐等

shell中$()和 ` `${}${!}${#}$[] 和$(()),[ ] 和(( ))和 [[ ]]