2010-08-16 65 views
0

我再次。我有一個簡單的問題。我有一個UIImageView,如下所示。 alt text http://img683.imageshack.us/img683/1999/volumen.png在UIImageView上的位置

UIimageView應該是控制我的iphone項目的音量的旋鈕。我的問題是,如何知道它在旋轉時UIImageView上的位置?因爲當石little上的小條垂直時,體積需要爲0.5。

我得到一段代碼,它是(在touchMoved法):

float dx = locationT.x - imgVVolume.center.x; 
float dy = locationT.y - imgVVolume.center.y; 


CGFloat angleDif = 0.0f; 

movedRotationAngle = atan2(dy,dx); 

if (beganRotationAngle == 0.0) { 
    beganRotationAngle = movedRotationAngle; 
    initialTransform = imgVVolume.transform; 
} 
else { 
    angleDif = beganRotationAngle - movedRotationAngle; 
    CGAffineTransform newTrans = CGAffineTransformRotate(initialTransform, -angleDif); 
    imgVVolume.transform = newTrans; 
} 

幫助請。

+0

最新錯誤?什麼是問題? – 2010-08-16 15:41:34

+0

問題是如何知道圖像視圖的位置,以便調整音量 – awlcs 2010-08-16 15:46:49

+0

wouldnt這是angleDif你正在尋找?可能你必須把它們全部加在一起:) – willcodejavaforfood 2010-08-16 16:28:43

回答

1

這取決於你想用什麼輸入機制來控制旋轉。

如果旋鈕是基於單手指觸摸從一側拖動到另一側,那麼您可以創建一個UIPanGestureRecognizer並將其連接到旋鈕UIImageViewtranslationInView:方法返回一個CGPoint,它是從觸地點開始的X和Y移動量。您可以將其輸入到您發佈的公式中,以獲得旋轉角度。您需要跟蹤上次位置的增量,並檢查停止限制(如0..360)以防止過度旋轉。

OTOH,如果您打算使用兩個手指旋轉,那麼您將需要使用UIRotationGestureRecognizer並查找rotation值。只需將其填入CGAffineTransformRotate並將其設置爲UIImageView轉換。這將爲您處理所有上述問題。再次,你會想檢查停止限制。

+0

你能舉個例子嗎?這是一個單一的手指觸摸我確認:D – awlcs 2010-08-16 21:37:27

相關問題