-1

これまでの私のコードは

rotateButton = [UIButton new];
    rotateButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [rotateButton setFrame:CGRectMake(334, 80, 100, 20)];
    [rotateButton addTarget:self action:@selector(rotateImageView:Degrees:InTimePeriod:) forControlEvents:UIControlEventTouchUpInside];
    [rotateButton setTitle:@"Rotate" forState:UIControlStateNormal];
    [self.view addSubview:rotateButton];

-(void)rotateImageView
{
    [self rotateImageView:imageView Degrees:90 InTimePeriod:1.5];
}

-(void)rotateImageView:(UIImageView*)imageView Degrees:(NSInteger)degrees InTimePeriod:(float)time
{
    CABasicAnimation *rotate;
    rotate = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
    rotate.fromValue = [NSNumber numberWithFloat:0];
    rotate.toValue = [NSNumber numberWithFloat:DEGREES_TO_RADIANS(degrees)];
    rotate.duration = time;
    rotate.repeatCount = 1;
    [imageView.layer addAnimation:rotate forKey:@"Rotate"];
}

ただし、回転を開始するために使用するボタンは、ボタンを押した後に回転するオブジェクトであり、回転させたいimageViewではありません。代わりにimageViewを回転させるにはどうすればよいですか?

4

2 に答える 2

0

変化する

    [rotateButton addTarget:self action:@selector(rotateImageView:Degrees:InTimePeriod:) forControlEvents:UIControlEventTouchUpInside];

    [rotateButton addTarget:self action:@selector(rotateImageView) forControlEvents:UIControlEventTouchUpInside];
于 2013-03-07T01:56:01.520 に答える
0
 [rotateButton addTarget:self action:@selector(rotateImageView:Degrees:InTimePeriod:) forControlEvents:UIControlEventTouchUpInside];

ボタンのアクションとして@selector(rotateImageView:Degrees:InTimePeriod :)を設定します。ボタンは、デフォルトとして@selector(rotateImageView:Degrees:InTimePeriod:)への最初の引数として自分自身を送信します。実行中、* imageViewはボタンを指しています。そのため、ボタンは回転しましたが、imageView.Doはaeubanksが言うように実行します。

于 2013-03-07T02:09:20.460 に答える