Iphone 速度表中的箭头旋转

Iphone 速度表中的箭头旋转,iphone,ios,Iphone,Ios,我已经安装了一个速度计。我有一个箭头图像。我想用手指触摸将其旋转0°至180°非常平滑,并且我应该给出边界。怎么可能呢 这是我的代码(在UIImageViewcategory中): 它旋转0到360度,我需要限制在20到160度的角度之间。根据触摸(使用trig)找出要应用的正确仿射变换并应用它 view.transform = CGAffineTransformMakeRotation(angleInRadians); 可能需要先平移原点,然后再平移回来,以使其围绕所需的点旋转。或者,可以

我已经安装了一个速度计。我有一个箭头图像。我想用手指触摸将其旋转0°至180°非常平滑,并且我应该给出边界。怎么可能呢

这是我的代码(在
UIImageView
category中):


它旋转0到360度,我需要限制在20到160度的角度之间。

根据触摸(使用trig)找出要应用的正确仿射变换并应用它

 view.transform = CGAffineTransformMakeRotation(angleInRadians);
可能需要先平移原点,然后再平移回来,以使其围绕所需的点旋转。或者,可以创建视图,使轴点位于视图的中心

要计算角度,请找到接触点与旋转点的距离(dx,dy)

tan角=dy/dx

使用

因为它通过知道它在哪个象限来处理符号(不要为dx传递0)

分别处理dx为0的情况(它是PI/2弧度)。您可能还需要处理其他一些特殊情况来约束它——只需选择“最小弧度”和“最大弧度”,并在变换中使用之前进行检查

根据问题更新进行编辑:您已经完成了最难的部分——只需查看角度并限制它


使用最小值和最大值限制角度1和角度2(记住它是弧度,所以
20/180*pi
160/180*pi
)。在您转到CGAffineTransformRotate之前,请这样做。如果您提供一些实际代码并获得反馈,而不是问这样一个一般性的问题,您将从堆栈溢出中获得最佳结果。可能会重复,但我需要将角度限制在20到160度之间(旋转0到360度)检查角度并用最小值和最大值限制它(但你必须用弧度表示)
radians=degrees/180*PI
我找不到确切的解决方案:@Lou Franco,你能不能填写上面的代码根据信息自己编程,如果遇到问题,贴出你的代码并问一个具体的问题。非常感谢你这篇有用的帖子
 view.transform = CGAffineTransformMakeRotation(angleInRadians);
 atan2(dy, dx)