0

私のアプリでは、画像を時計回りに0〜90(度)の間で回転させる必要があります。その逆も同様です。この最初の方法では、画像ビューを作成しています。

self.needleImageView  = [[UIImageView alloc]initWithFrame:CGRectMake(300,155, 15,150)];
self.needleImageView.layer.anchorPoint = CGPointMake(0.5,1.0);// Shift the Needle center point to one of the end points of the needle image.
self.needleImageView.backgroundColor = [UIColor clearColor];
self.needleImageView.image = [UIImage imageNamed:@"Arrow.png"];
[self.view addSubview:self.needleImageView];

このコードを使用すると、画像は垂直方向になります。水平方向の画像を取得するには、CGAffineTransformMakeRotation(-M_PI / 2);を適用します。

self.needleImageView.transform=CGAffineTransformMakeRotation(-M_PI/2);

この後、画像を回転させるために次のアニメーションコードを使用しました//自動反転で0から90まで回転し、アニメーションを完了して画像を元の位置に維持した後、コードを完成させました

  [UIView animateWithDuration: 0.8f
                      delay: 0.0f
                    options: (UIViewAnimationOptionAutoreverse)
                 animations: ^{
                     self.needleImageView.transform = CGAffineTransformRotate(self.needleImageView.transform,M_PI/2);
                 }
                 completion: ^(BOOL finished) {
                     self.needleImageView.transform = CGAffineTransformRotate(self.needleImageView.transform,-M_PI/2);
                 }];

このコードを実行すると、画像が水平位置になります。アニメーションボタンをクリックしてアニメーションを適用すると、画像の回転は270度から0度まで、またはその逆になります。アニメーション画像が270度(垂直方向)に配置された後

画像を0〜90度の間でのみ回転させたい。私の問題を明確に理解できるように、このコードを実行してください。助けてください...

前もって感謝します

4

1 に答える 1

0

これで問題が解決するはずです。

 self.needleImageView1.transform = CGAffineTransformIdentity
 //now animation

UIViewAnimationOptionAutoreverseあなたがそれからno useのために持っているかどうかに注意してくださいcompletion block

于 2013-01-02T12:44:42.273 に答える