我再次。我有一个简单的问题。我有一个如下所示的UIImageView。 alt text http://img683.imageshack.us/img683/1999/volumen.png
UIimageView应该是控制我的iphone项目音量的旋钮。我的问题是,如何在旋转时知道UIImageView上的条形位置?因为当cercle上的小条是垂直的时,音量需要为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 :(得分:1)
这取决于您想要用来控制旋转的输入机制。
如果要旋转旋钮基于单指触摸从一侧拖动到另一侧,则可以创建UIPanGestureRecognizer
并将其附加到旋钮UIImageView
。 translationInView:
方法返回CGPoint
,这是从触及点开始的X和Y移动量。您可以将其输入到您发布的公式中以获得旋转角度。您需要跟踪上一个位置的增量并检查停止限制(如0..360)以防止过度旋转。
OTOH,如果您要使用两个手指旋转,那么您将需要使用UIRotationGestureRecognizer
并查找rotation
值。只需将其输入CGAffineTransformRotate
并将其设置为UIImageView
转换即可。这照顾了你所有的上述内容。同样,您需要检查停止限制。