2013-04-17 51 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)};