1

次のタスクがあります。ボタンをクリックすると、画像を90度回転させる必要があります。

私のコードは次のとおりです。

#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>
@interface ViewController : UIViewController
@property (strong, nonatomic) IBOutlet UIImageView *vector;
@end

=========

@interface ViewController ()

@end

@implementation ViewController
@synthesize vector;

- (void)viewDidLoad
{
    [super viewDidLoad];
}
- (IBAction)rotateOn:(id)sender {
    [self rotateImage:self.vector duration:2
                curve:UIViewAnimationCurveEaseIn degrees:M_PI/2];
}

- (void)rotateImage:(UIImageView *)image duration:(NSTimeInterval)duration
              curve:(int)curve degrees:(CGFloat)degrees
{
    // Setup the animation
    [UIView beginAnimations:NULL context:NULL];
    [UIView setAnimationDuration:duration];
    [UIView setAnimationCurve:curve];
    [UIView setAnimationBeginsFromCurrentState:YES];
    [image.layer setAnchorPoint:CGPointMake(0.5,0.5)];
    CGAffineTransform transform =
    CGAffineTransformMakeRotation(degrees);
    image.transform = transform;
    [UIView commitAnimations];
}




ボタンをクリックする前にこれを持っていますこれ

クリック前


をクリックした後

クリック後

画像が 90 度回転することがわかります。しかし、それは開始の中心点から下に移動しました。また、もう一度ボタンをクリックしても何も起こりません。

4

4 に答える 4

1

回転ボタン メソッド内で、このコードを使用して画像を 90 回転させます。

static int numRot = 0;
myimage.transform = CGAffineTransformMakeRotation(M_PI_2 * numRot);
++numRot;
于 2015-09-30T13:25:59.507 に答える
1

iOS6 とストーリーボードを使用していると思います。ストーリーボードで自動レイアウトを無効にして、アニメーションをもう一度テストしてみてください。
それが機能し、自動レイアウト機能を維持したい場合は、制約を調整する必要があります!

ちなみに、デフォルトanchorPointは already(0.5, 0.5)で、行は必要ありません (他の場所を変更しない限りanchorPoint):

[image.layer setAnchorPoint:CGPointMake(0.5,0.5)];
于 2013-09-14T13:18:54.943 に答える
0

使用する :

imageView.transform = CGAffineTransformMakeRotation(0);//Upright
imageView.transform = CGAffineTransformMakeRotation(M_PI/2);//90 degrees clockwise
imageView.transform = CGAffineTransformMakeRotation(-M_PI/2);//90 degrees counter-clockwise

また、フレームを確認してください

  • ボタンをクリックする前に
  • ボタンクリック後、回転前
  • 回転後

そこに異常が見つかるかもしれません。

于 2013-09-14T13:25:16.133 に答える