私は運命の輪に似た糸車に取り組んできました。私はほとんどそれを割ったが、レンガの壁にぶつかった。この投稿で述べたのと同じ問題。車輪のアニメーションは、勢いを生み出しているかのように前後に移動する必要があり、放すと時計回りに回転します。
私はすべての作業を行っていますが、最初のタッチで、ホイールの開始点が現在の立っている位置からではなく、指のタッチダウンの場所になっているため、ホイールがジャンプします。なぜそれをしているのかは理解していますが、ジャンプしないようにする方法がわかりません。
UIRotateGestureRecognizer を使用する提案を見てきましたが、私が見つけた問題は次のとおりです。角度の増分を回転させると、アニメーションが速くなります。反対方向に進むと、その時点でどの角度からでも減分する必要があります。マイナス度。これらの問題を修正できる可能性があると確信していますが、解決策がある場合は書き直すのではなく、現在のソリューションIDに非常に近いです。
他の投稿で totalRadians を使用することが解決策であることに気づきました。私にとっては、反時計回りのアニメーションが許可されませんでした。
totalRadians += fabs(theAngle - totalRadians);
totalRadians = fmod(totalRadians, 2*M_PI);
これは私がこれまでに持っているものです。
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInView:wheelImage];
xleg = location.x-starttoset.x;
yleg = location.y-starttoset.y;
swipetimer = CFAbsoluteTimeGetCurrent();
CGAffineTransform transforms;
location = [touch locationInView:wheelImage];
float theAngle = atan2( location.y-wheelImage.center.y, location.x-wheelImage.center.x );
transforms = CGAffineTransformConcat(spinningWheelImage.transform,CGAffineTransformMakeRotation(theAngle));
}