Положение на UIImageView - PullRequest
       4

Положение на UIImageView

0 голосов
/ 16 августа 2010

Я снова.У меня простой вопрос.У меня есть 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;
}

Помогите, пожалуйста.

1 Ответ

1 голос
/ 16 августа 2010

Это зависит от того, какой механизм ввода вы хотите использовать для управления вращением.

Если ручка вращается на основе одного касания пальцем, перетаскивая ее из стороны в сторону, вы можете создать UIPanGestureRecognizer и прикрепить ее к ручке UIImageView. Метод translationInView: возвращает значение CGPoint, которое представляет собой величину перемещения X и Y от точки приземления. Вы можете добавить это в формулу, подобную той, которую вы публикуете, чтобы получить угол поворота. Вы хотите отслеживать дельту из последней позиции, а также проверять пределы стопа (например, 0..360), чтобы предотвратить чрезмерное вращение.

OTOH, если вы собираетесь использовать вращение двумя пальцами, вам нужно будет использовать UIRotationGestureRecognizer и искать значение rotation. Просто введите это в CGAffineTransformRotate и установите преобразование UIImageView. Это позаботится обо всем вышеперечисленном для вас. Опять же, вы захотите проверить ограничения на стоп.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...