iphone - 带有滑动问题的旋转圆圈

标签 iphone objective-c

好吧,我正在制作一个基本上用作旋钮的东西,但只有一半在屏幕上——所以我只需要水平滑动即可使其旋转。除了一个异常(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/

相关文章:

iphone - 对同一对象多次调用 -retain

iphone - 如何解码 NSString 中的 html 编码字符?

iphone - 解析存储在 iPhone 应用程序的文档目录中的 XML 文件

objective-c - 关闭 ViewController + Table ViewController + Master-Detail 应用程序

iphone - 将 NSArrays 转换为 C 样式( double )数组的最快例程是什么?

iphone - iToast在iPhone中的实现

iphone - 在 UIImagePickerController 中隐藏记录按钮

objective-c - UITextView 没有成为第一响应者

ios - 如何访问 iOS 中的照片库?

objective-c - NSDate 获取年/月/日