2010-08-16 4 views
0

다시 나. 나는 간단한 질문이있다. 아래에 표시된 것과 같은 UIImageView가 있습니다. alt text http://img683.imageshack.us/img683/1999/volumen.png위치 UIImageView

그 UIimageView 내 아이폰 프로젝트의 볼륨을 제어하는 ​​노브로되어있다. 내 질문은, UIImageView에 막대의 위치를 ​​알고 그것을 회전하는 방법입니다? 왜냐하면 세 척의 작은 막대가 수직 일 때 볼륨을 0.5로해야하기 때문입니다.

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; 
} 

도와주세요 :

내가합니다 (touchMoved 방법에)입니다 코드의 조각을 얻었다.

+0

뭐가 잘못 됐나요? 질문은 무엇입니까? –

+0

문제는 이미지 뷰의 위치를 ​​알아 내서 볼륨을 조정하는 것입니다. – awlcs

+0

당신이 찾고있는 각도가 아닐까요? 아마도 모두 함께 추가해야합니다 :) – willcodejavaforfood

답변

1

회전을 제어하는 ​​데 사용할 입력 메커니즘에 따라 다릅니다.

한 손가락으로 터치를 좌우로 드래그하여 회전하려는 경우 UIPanGestureRecognizer을 만들고 노브 UIImageView에 부착 할 수 있습니다. translationInView: 메서드는 터치 다운 지점에서 X 및 Y 이동량 인 CGPoint을 반환합니다. 회전 각도를 얻기 위해 게시 한 수식에 피드를 넣을 수 있습니다. 마지막 위치에서 델타를 추적하고과 회전을 방지하기 위해 정지 제한 (예 : 0..360)을 확인해야합니다.

OTOH 두 손가락 회전을 사용하려는 경우 UIRotationGestureRecognizer을 사용하고 rotation 값을 찾고 싶을 것입니다. CGAffineTransformRotate에 피드를 입력하고 UIImageView 변형으로 설정하면됩니다. 그것은 위의 모든 것을 처리합니다. 다시 한 번, 정지 한계를 확인하고 싶을 것입니다.

+0

예제를 제공해 주시겠습니까? 내가 한 번만 손가락으로 만졌을 때 : D – awlcs