首页 > 解决方案 > 我将如何实现一个数字保持垂直的旋转罗盘表盘?

问题描述

我正在尝试为我的应用程序生成一个显示,其工作方式类似于标准 iPhone 指南针应用程序 - 具体而言,表盘旋转,但注释(N、S、E、W 和各种数字)在环绕时保持垂直。我现在有一个可以运行的应用程序版本,但我不得不混合旋转表盘的 CGAffineTransforms,然后手动将文本重新绘制到正确的位置。除了愚蠢和浪费之外,我不相信我可以使用动画来平滑旋转。有没有做这种事情的标准方法?我想我可以为环周围的每个数字/字母生成一个独特的仿射变换,但这似乎也很昂贵。我知道这是可以做到的,因为正如他们所说,标准的指南针应用程序“像黄油一样光滑”。有任何想法吗?

我的应用程序目前有一个视图,它首先绘制表盘的非文本部分。我使用 CGAffineTransforms 根据来自 CLLocation 的输入来旋转它。这很好用。我有第二个视图,它再次基于 CLLocation 标题手动重绘罗盘刻度盘的所有文本部分。我可以为 AffineTransforms 设置动画,但不能对重绘进行动画处理,因此要么更新不同步(表盘移动平稳,而文本更加紧张),要么一切都变得紧张。

不适用

希望有一个统一的绘图技术,我可以制作动画,这样我的指南针动画就会像内置应用程序一样流畅。

标签: swiftdrawingcore-animation

解决方案


我想我想通了。对于那些有同样问题的人,这是一个简单的解决方案:

  • 使用旋转拨盘创建 UIView
  • 将您的文本添加为​​ UILabel,使它们成为该视图的子视图
  • 当您旋转主视图时,向它发送一条消息以将其所有子视图旋转相反的量。

将所有这些包裹在动画中,它会像丝绸一样光滑。

希望对某人有所帮助...


推荐阅读