Я выполняю некоторые расчеты перетаскивания и поворота с помощью UIPanGestureRecognizer. Угол поворота правильный, и положение перетаскивания почти правильное. Проблема в том, что при движении по центру коробки нужно регулировать угол, и я не могу понять, как это сделать.
Я включил изображения того, как выглядит поворот на 180, но где находится палец во время поворота. Я просто не знаю, как настроить, чтобы блок оставался с пальцем должным образом. И вот видео просто для пояснения, потому что это странное поведение.http://tinypic.com/r/mhx6a1/5
РЕДАКТИРОВАТЬ:Вот реальное видео того, что должно происходить. Проблема в том, что в видео с iPad ваш палец движется там, где в реальном мире ваш палец был бы зафиксирован в определенном месте на движущемся предмете. Необходимая математика состоит в том, чтобы отрегулировать местоположение вашего касания по углу с разницей от фактического центра. Я просто не могу понять математику.http://tinypic.com/r/4vptnk/5
Большое спасибо!
- (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)];
}
}