4

xcode で単純な単一ビュー アプリケーションを使用して、円を描くように画像を回転させようとしています。メインストーリーボードとボタンに円の画像があります。私は次のコードを使用していますが、円の画像は右にドリフトし、回転すると左に戻ります。何が欠けているのかわかりません。

助けてくれてありがとう。

ViewController.h

#import <UIKit/UIKit.h>

 @interface ViewController : UIViewController
 {
         IBOutlet UIImageView *theImageView;
         IBOutlet UIButton    *theButton;
         NSTimer              *theTimer;
         float        angle;
         BOOL         runStop;
     }


 @property (atomic, retain) IBOutlet UIImageView *theImageView;
 @property (atomic, retain) IBOutlet UIButton    *theButton;

 -(IBAction)runRoulette:(id)sender;

 @end

ViewController.m

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
@synthesize theButton, theImageView;


- (void)viewDidLoad
{
    angle = 0;
    runStop = FALSE;
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

-(void)rotateRoulette
{
    theImageView.center = CGPointMake(self.theImageView.center.x, self.theImageView.center.y);
    theImageView.transform=CGAffineTransformMakeRotation (angle);
    angle+=0.001;
}


-(IBAction)runRoulette:(id)sender
{
    if(!runStop)
    {
        theTimer = [NSTimer scheduledTimerWithTimeInterval:1.0/600.0 target:self selector:@selector(rotateRoulette) userInfo:nil repeats:YES];
    }
    else
    {
        [theTimer invalidate];
        theTimer = nil;
    }
    runStop = !runStop;
}
@end
4

1 に答える 1

2

アニメーションを思いどおりに機能させる非常に簡単な方法を見つけました -

theImageView.center = CGPointMake(160.0, 364.0);
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:5];
//theImageView.center=CGPointMake(self.theImageView.center.x, self.theImageView.center.y);
theImageView.transform = CGAffineTransformMakeRotation(M_PI/2.65);
[UIView commitAnimations];

theImageView M_PI/2.65 (M_PI/2.65 はローテーション量) を 5 回スピンします。

于 2013-01-14T00:25:23.640 に答える