2013-04-17 56 views
1

我有一个圆形仪表前瞻性的UIView有手形,围绕中心锚点旋转(认为:车速表)。我有它的工作,所以手旋转到正确的地方给定一个值使用图层转换。旋转轮计/米的双手触摸

我希望用户能够对仪表的手阻力以及拉拔到另一个值。我无法找出这种互动though-我的手本身使用UIPanGestureRecognizer得到一个翻译了点,但我怎么计算该调整的手的角度?这实际上似乎更像是一个几何问题而已。

而且,因为它是一个圆形的仪表,我不想调整基于要么只是x或只是翻译点的Y分量的角度。

+0

是 “针” 一个看法?或者你只是在绘制“针”? – John

+0

针是一个UIImageView。我使用anchorPoint固定了中心,并使用CATransform3DMakeRotation进行旋转。 – Keller

回答

2

如果我理解你的权利,这是简单的几何图形:极性和直角坐标系之间的转换。使用触摸点的位置发现绕了一圈的角度(就像它是在极坐标):

CGPoint touchPoint = ...; 
double touchTheta = atanf(touchPoint.x, touchPoint.y); 

然后,你可以这样做计算针的终点,鉴于其长度(半径) :

CGPoint needleEndpoint = (CGPoint){needleLength * sinf(touchTheta), 
            needleLength * cosf(touchTheta)};