如何实现数字保持垂直的旋转罗盘刻度盘?

时间:2019-01-21 02:02:28

标签: swift drawing core-animation

我正在尝试为我的应用生成与标准iPhone Compass应用类似的显示-具体来说,表盘旋转,但是注解(N,S,E,W和各种数字)在圈出时保持垂直周围。我现在有一个可以使用的应用程序版本,但是我不得不混用CGAffineTransforms来旋转表盘,然后手动将文本重新绘制到正确的位置。除了愚蠢和浪费之外,我不认为我可以在自己的方法中使用动画来平滑旋转。是否有标准的方法来做这种事情?我想我可以为环上的每个数字/字母生成一个唯一的仿射变换,但这似乎也很昂贵。我知道这是可以做到的,因为标准指南针应用程序就像他们所说的那样“像黄油一样光滑”。有什么想法吗?

我的应用当前具有一个视图,该视图首先绘制表盘的非文本部分。我使用CGAffineTransforms基于CLLocation的输入来旋转它。效果很好。我有第二个视图,该视图再次根据CLLocation标题重新绘制了罗盘刻度盘的所有文本部分。我可以为AffineTransforms设置动画,但不能重绘动画,因此更新要么不同步(表盘移动平稳,而文本更抖动),要么所有内容都抖动。

不适用

我希望能使用统一的绘画技术制作动画,这样我的指南针动画将与内置应用程序一样流畅。

1 个答案:

答案 0 :(得分:0)

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

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

将所有内容包装在动画中,它将像丝绸一样平滑。

希望可以帮助某人...