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)];
}
}