我从viewDidLoad调用函数[self moveFishLeft]并且对象正确动画,但是当我尝试在touchesBeganWithEvent上删除动画时,动画仍然存在。那么如何在屏幕触摸上删除所有左右功能动画。
- (void)moveFishLeft {
[UIView animateWithDuration:6.0f
delay:0.0f
options:UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionAllowAnimatedContent
animations:^{
[optionView1 setFrame:CGRectMake(0, 480, 130, 110)];
[optionView2 setFrame:CGRectMake(0, 600, 130, 110)];
[optionView3 setFrame:CGRectMake(130, 530, 130, 110)];
[optionView4 setFrame:CGRectMake(130, 670, 130, 110)];
[optionView5 setFrame:CGRectMake(130, 780, 130, 110)];
[optionView6 setFrame:CGRectMake(0, 720, 130, 110)];
}
completion:^(BOOL finished) {
[optionView1.layer removeAllAnimations];
[optionView2.layer removeAllAnimations];
[optionView3.layer removeAllAnimations];
[optionView4.layer removeAllAnimations];
[optionView5.layer removeAllAnimations];
[optionView6.layer removeAllAnimations];
[optionImage1 setImage:[UIImage imageNamed:@"fish1_right"]];
[optionImage2 setImage:[UIImage imageNamed:@"fish1_right"]];
[optionImage3 setImage:[UIImage imageNamed:@"fish1_right"]];
[optionImage4 setImage:[UIImage imageNamed:@"fish1_right"]];
[optionImage5 setImage:[UIImage imageNamed:@"fish1_right"]];
[optionImage6 setImage:[UIImage imageNamed:@"fish1_right"]];
[self moveFishRight];
}];
}
- (void)moveFishRight {
[UIView animateWithDuration:6.0f
delay:0.0f
options:UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionAllowAnimatedContent
animations:^{
[optionView1 setFrame:CGRectMake(530, 480, 130, 110)];
[optionView2 setFrame:CGRectMake(530, 600, 130, 110)];
[optionView3 setFrame:CGRectMake(638, 530, 130, 110)];
[optionView4 setFrame:CGRectMake(638, 670, 130, 110)];
[optionView5 setFrame:CGRectMake(638, 780, 130, 110)];
[optionView6 setFrame:CGRectMake(530, 720, 130, 110)];
}
completion:^(BOOL finished) {
[optionView1.layer removeAllAnimations];
[optionView2.layer removeAllAnimations];
[optionView3.layer removeAllAnimations];
[optionView4.layer removeAllAnimations];
[optionView5.layer removeAllAnimations];
[optionView6.layer removeAllAnimations];
[optionImage1 setImage:[UIImage imageNamed:@"fish1"]];
[optionImage2 setImage:[UIImage imageNamed:@"fish1"]];
[optionImage3 setImage:[UIImage imageNamed:@"fish1"]];
[optionImage4 setImage:[UIImage imageNamed:@"fish1"]];
[optionImage5 setImage:[UIImage imageNamed:@"fish1"]];
[optionImage6 setImage:[UIImage imageNamed:@"fish1"]];
[self moveFishLeft];
}];
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[optionView1.layer removeAllAnimations];
[optionView2.layer removeAllAnimations];
[optionView3.layer removeAllAnimations];
[optionView4.layer removeAllAnimations];
[optionView5.layer removeAllAnimations];
[optionView6.layer removeAllAnimations];
}
答案 0 :(得分:0)
请参考以下代码: -
[self.view.layer removeAllAnimations];
使用它可能有用。
答案 1 :(得分:0)
您忘记在CATransaction中包装所有“removeAllAnimations”:
(需要QuartzCore导入)
[CATransaction begin];
[optionView1.layer removeAllAnimations];
[optionView2.layer removeAllAnimations];
[optionView3.layer removeAllAnimations];
[optionView4.layer removeAllAnimations];
[optionView5.layer removeAllAnimations];
[optionView6.layer removeAllAnimations];
[CATransaction commit];