在UIImageView上的位置

时间:2010-08-16 15:32:33

标签: iphone ipad animation uiimageview

我再次。我有一个简单的问题。我有一个如下所示的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;
}

请帮助。

1 个答案:

答案 0 :(得分:1)

这取决于您想要用来控制旋转的输入机制。

如果要旋转旋钮基于单指触摸从一侧拖动到另一侧,则可以创建UIPanGestureRecognizer并将其附加到旋钮UIImageViewtranslationInView:方法返回CGPoint,这是从触及点开始的X和Y移动量。您可以将其输入到您发布的公式中以获得旋转角度。您需要跟踪上一个位置的增量并检查停止限制(如0..360)以防止过度旋转。

OTOH,如果您要使用两个手指旋转,那么您将需要使用UIRotationGestureRecognizer并查找rotation值。只需将其输入CGAffineTransformRotate并将其设置为UIImageView转换即可。这照顾了你所有的上述内容。同样,您需要检查停止限制。