iOS如何围绕锚点旋转视图并跟随触摸移动?

3

我需要在iOS中创建一个圆形评分表,类似于UISlider,只是弯曲3/4绕着圆形。我需要通过拖动一个不可见的可触摸手柄区域来旋转一个UIImageView(即评分指针)围绕锚点旋转,该手柄区域将跟随指针的尖端移动。指针的角度将确定一个值。

我正在努力寻找一种优雅的解决方案。有什么想法吗?

1个回答

6

你尝试过使用 UIImageView 底层图层的 anchorPoint 属性吗?如果你有一个表示旋转点(在图像视图坐标系中)的 CGPoint,你可以设置图层的锚点:

CGRect imageBounds = self.needleImageView.bounds;
[self.needleImageView.layer setAnchorPoint:CGPointMake(rotationPoint.x / imageBounds.size.width, rotationPoint.y / imageBounds.size.height)];


确保图像视图的center属性设置为适当的位置,然后应用旋转变换以围绕图层的锚点旋转:

self.needleImageView.transform = CGAffineTransformRotate(self.needleImageView.transform, angleInRadians);

请记住您需要导入 <QuartzCore/QuartzCore.h> 才能访问图层的属性。

我该如何让指针指向触摸位置,并随着触摸位置的拖动而跟随移动?我担心现在可能是时候使用古老的三角学知识了。 - jmcopeland
@jmcopeland:是的,三角函数对我来说听起来不错(好吧...你知道我是什么意思)。你知道从旋转点的 x 和 y 轴平移,因此找到角度应该很容易。只需注意旋转将从 -π 到 +π 而非 0 到 2π 进行运算的事实即可。另外,为了避免除以零错误,我喜欢避免使用 tan(x) = opp/adj - Stuart
嗨,斯图尔特,我遇到了一个类似你之前解决的问题,你能和我聊一下吗? - Zubair

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接