Перетаскивание + вращение с использованием UIPanGestureRecognizer. Смещение касания с пути.

Я выполняю некоторые расчеты перетаскивания и поворота с помощью UIPanGestureRecognizer. Угол поворота правильный, и положение перетаскивания почти правильное. Проблема в том, что при движении по центру коробки нужно регулировать угол, и я не могу понять, как это сделать.

Я включил изображения того, как выглядит поворот на 180, но где находится палец во время поворота. Я просто не знаю, как настроить, чтобы блок оставался с пальцем должным образом. И вот видео просто для пояснения, потому что это странное поведение.http://tinypic.com/r/mhx6a1/5

РЕДАКТИРОВАТЬ:Вот реальное видео того, что должно происходить. Проблема в том, что в видео с iPad ваш палец движется там, где в реальном мире ваш палец был бы зафиксирован в определенном месте на движущемся предмете. Необходимая математика состоит в том, чтобы отрегулировать местоположение вашего касания по углу с разницей от фактического центра. Я просто не могу понять математику.http://tinypic.com/r/4vptnk/5

first shot

second shot

third shot

Большое спасибо!

- (void)handlePan:(UIPanGestureRecognizer *)gesture
{
    if (gesture.state == UIGestureRecognizerStateBegan) {
        // set original center so we know where to put it back if we have to.
        originalCenter = dragView.center;

    } else if (gesture.state == UIGestureRecognizerStateChanged) {
        [dragView setCenter:CGPointMake( originalCenter.x + [gesture translationInView:self.view].x, originalCenter.y + [gesture translationInView:self.view].y )];

        CGPoint p1 = button.center;
        CGPoint p2 = dragView.center;

        float adjacent = p2.x-p1.x;
        float opposite = p2.y-p1.y;

        float angle = atan2f(adjacent, opposite); 

        [dragView setTransform:CGAffineTransformMakeRotation(angle*-1)];

    }
}

6
задан Ryan Poolos 17 April 2012 в 21:29
поделиться