每次单击按钮时,我都会尝试旋转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度。
答案 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];