多次单击按钮时无法旋转图像

时间:2014-09-17 06:38:27

标签: ios objective-c uiviewanimation cgaffinetransform

每次单击按钮时,我都会尝试旋转ImageView。它只在第一次点击按钮时旋转,否则它是无聊的

- (IBAction)btnRotate:(id)sender
{
    [UIView animateWithDuration:1.0 delay:0.0 options:UIViewAnimationOptionTransitionNone animations:^
    {
        CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI);
        self.image.transform = transform;
    } completion:NULL];
}

另外我想从最后一次旋转的状态旋转图像,我的意思是,如果我将图像旋转到90度,下次点击按钮时,图像应该从90度旋转到180度。

3 个答案:

答案 0 :(得分:2)

这样做:

CGAffineTransform transform = self.image.transform;
CGAffineTransform transform_new = CGAffineTransformRotate(transform, M_PI);
self.image.transform = transform_new;

而不是:

CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI);
self.image.transform = transform;

每次按下按钮,都需要考虑先前的旋转。

答案 1 :(得分:0)

问题在于您只是将M_PI设置为转换,转换将应用于原始图像,因此无论您单击按钮多少次,它始终为90.您需要做的是获取当前转换并将其添加到要应用的转换中。因此,每次点击按钮,转换将从90-> 180-> 270等

答案 2 :(得分:0)

此代码可以帮助您。

[UIView animateWithDuration:1.0 delay:0.0 options:UIViewAnimationOptionTransitionNone animations:^
 {
     CGFloat angle = [(NSNumber *)[self.image valueForKeyPath:@"layer.transform.rotation.z"] floatValue];

     CGAffineTransform transform = CGAffineTransformMakeRotation(angle+M_PI_2);
     self.image.transform = transform;
 } completion:NULL];