【问题标题】:Position on UIImageViewUIImageView 上的位置
【发布时间】:2010-08-16 15:32:32
【问题描述】:

又是我。我有一个简单的问题。我有一个如下所示的 UIImageView。 alt text http://img683.imageshack.us/img683/1999/volumen.png

那个 UIimageView 应该是控制我 iphone 项目音量的旋钮。我的问题是,当 UIImageView 旋转时,如何知道它的位置?因为当圆环上的小条垂直时,音量需要为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;
}

请帮忙。

【问题讨论】:

  • 怎么了?问题是什么?
  • 问题是如何知道imageview的位置从而调整音量
  • 那不是您要找的角度吗?可能你必须把它们加在一起:)

标签: iphone ipad animation uiimageview


【解决方案1】:

这取决于您要使用哪种输入机制来控制旋转。

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

OTOH,如果您要使用两个手指旋转,那么您需要使用 UIRotationGestureRecognizer 并查找 rotation 值。只需将其输入CGAffineTransformRotate 并将其设置为UIImageView 转换。这会为您处理上述所有问题。同样,您需要检查止损限制。

【讨论】:

  • 您能举个例子吗?我确认这是单指触摸:D
猜你喜欢
  • 1970-01-01
  • 2018-01-08
  • 2012-10-31
  • 1970-01-01
  • 1970-01-01
  • 2014-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多