2

我正在寻找在 iPhone / iPad 应用程序中创建缓动轮。我知道你可以继承 UIGestureRecognizer 来编写你自己的识别器。有谁知道如何(主要是它背后的数学)创建一个可以检测圆周运动的方法,也许与平移手势相结合?

谢谢

4

1 回答 1

5

这个问题并不容易。我花了一些时间考虑一个可能的解决方案:
我认为您需要的是必须设置的一些关键属性:

  • 圆周运动的中心(在这种情况下没问题,因为你知道缓动轮的中心)
  • 应该发生运动的走廊。
    • 所以你需要内半径和外半径。

现在你有这样的东西(不幸的是我没有足够的声誉,所以只有链接:http: //img17.imageshack.us/img17/4416/bildschirmfoto20100721u.png

现在开始计算这背后的数学:
首先,您将走廊布置成四个四分之一:

  • 从 0° 到 90°
  • 从 90° 到 180°
  • 从 180° 到 270°
  • 从 270° 到 360°

对于每个季度,您必须弄清楚手指何时移动(假设 0° 线从中心点一直到顶部):

  • 如果手指在第一节,您知道 x 是否向左改变,旋转必须是逆时针的。如果 x 向右更改,则必须顺时针旋转。

将此逻辑应用于所有季度。现在您知道缓动盘是顺时针还是逆时针移动了。您必须确保手指永远不会离开走廊(如果您测试此逻辑并且运动因离开走廊而停止,请使走廊更大 - 感谢 CrystalSkull 的评论:使用 44px 作为最小宽度走廊适用于人机界面指南)。

总结
所以现在你可以得出结论,你需要一个中心点和一个手指可以移动的走廊。你必须弄清楚手指在哪个四分之一,并找出(使用x值)旋转是顺时针还是逆时针-顺时针。

我希望这对您有所帮助。

于 2010-07-21T09:32:46.347 回答