好吧,我正在制作一个基本上用作旋钮的东西,但只有一半在屏幕上——所以我只需要水平滑动即可使其旋转。除了一个异常(exception),我几乎对所有内容都进行了排序:如果您在滑动中途改变滑动方向,则旋转不会改变方向。我什至可以看到问题所在,但不确定如何解决。
所以在我的 touchesMoved 中,我以可预测的方式滑动到弧度:
CGFloat radians = atan2f(location.y - centerY, location.x - centerX);
然后我存储弧度,将其添加/减去之前的旋转,然后将结果提供给 CATransform3D。
所以可能是即使滑动改变了方向,也存在不允许立即改变方向的“平衡”。
这有什么意义吗?
最佳答案
首先,我希望您知道 atan() 返回的值在 -π/2..+π/2 范围内,这样您就永远不会在圆的另一半得到值。 (如果你推断答案在那一边,你必须自己做翻转/镜像。)
在您的 touches-moved NSLog() 中,您计算出的新差异是什么,并确保它是您期望的值。
当然,您在 touchesBegan 上保留之前的弧度,并在 init、touchesEnded 和 touchesCancelled 上保存当前弧度,对吗?
(在很多情况下,touchesCancelled 可以将参数转发给 touchesEnded。)
如果您执行所有这些操作,那么您描述的方案应该可行。如果没有,也许可以提供更多信息,例如当您认为这些值应该不同时,各种值的 NSLog() 输出。
关于iphone - 带有滑动问题的旋转圆圈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2901585/