UIImageView
ユーザーがタッチして時計回りに指を動かしたときに反時計回りに回転するようにアニメーション化しようとしています。
基本的に、タッチが終了したらUIImageViewを元の位置に戻し、反時計回りに移動する必要があります。
私が抱えている問題は、角度 (度単位) が 180 を超えるたびに、画像が時計回りに回転して元の位置に戻ることです。どうやら最短ルートで戻るようです。角度が 179 度以下の場合、画像は反時計回りに回転します (必要なもの)。
これらのコードの両方を試してみましたが、同じように動作します。助言がありますか?
注: ここで angle 変数は double であり、ゼロに初期化されており、コード全体で 0 のままです
-(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
[self handleObject:touches withEvent:event isLast:YES];
/* this doesn't make rotation counter clockwise for rotations greater than 180 */
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationCurve: UIViewAnimationCurveLinear];
[UIView setAnimationDuration:1.0];
[UIView setAnimationRepeatCount:1];
CGAffineTransform transform = CGAffineTransformMakeRotation(angle);
circle1ImgVw.transform = CGAffineTransformRotate(transform, angle);
// ends animation
[UIView commitAnimations];
/* this doesn't make rotation counter clockwise for rotations greater than 180 */
[UIView animateWithDuration:1.0 animations:^{
circle1ImgVw.transform = CGAffineTransformMakeRotation(angle);
}];
}
この投稿を調べてみましたが、いくつか問題があります
- アニメーションが完了したら、画像をタッチして回転させることができなくなりました
- それは常に時計回りの方向にアニメーション化され、ユーザーが画像の回転を終了した時点から反時計回りにスムーズに移動する方法を理解できませんでした。