我已经搜索了很多关于SO的内容和苹果的参考文献,但仍然无法解决我的问题。
我有:
1. 一个屏幕,其中包含2个UIImageView和2个与它们连接的UIButton。 2. 两种动画:
- 每个图像依次放大然后缩小,仅在viewDidLoad中执行一次。 - 当按下按钮(每个UIImageView内部隐藏的自定义按钮)时,它会触发相应UIImageView的动画 - 只有一个,而不是两个 - (也是先放大然后缩小)。 - 因为我正在为iOS4+编写,所以被告知要使用基于块的动画!
我需要:
如何取消正在运行的动画?我已经设法在最后一个之后取消了... :/
这是我的代码片段:
一些方式下,
我有:
1. 一个屏幕,其中包含2个UIImageView和2个与它们连接的UIButton。 2. 两种动画:
- 每个图像依次放大然后缩小,仅在viewDidLoad中执行一次。 - 当按下按钮(每个UIImageView内部隐藏的自定义按钮)时,它会触发相应UIImageView的动画 - 只有一个,而不是两个 - (也是先放大然后缩小)。 - 因为我正在为iOS4+编写,所以被告知要使用基于块的动画!
我需要:
如何取消正在运行的动画?我已经设法在最后一个之后取消了... :/
这是我的代码片段:
[UIImageView animateWithDuration:2.0
delay:0.1
options:UIViewAnimationOptionAllowUserInteraction
animations:^{
isAnimating = YES;
self.bigLetter.transform = CGAffineTransformScale(self.bigLetter.transform, 2.0, 2.0);
} completion:^(BOOL finished){
if(! finished) return;
[UIImageView animateWithDuration:2.0
delay:0.0
options:UIViewAnimationOptionAllowUserInteraction
animations:^{
self.bigLetter.transform = CGAffineTransformScale(self.bigLetter.transform, 0.5, 0.5);
} completion:^(BOOL finished){
if(! finished) return;
[UIImageView animateWithDuration:2.0
delay:0.0
options:UIViewAnimationOptionAllowUserInteraction
animations:^{
self.smallLetter.transform = CGAffineTransformScale(self.smallLetter.transform, 2.0, 2.0);
} completion:^(BOOL finished){
if(! finished) return;
[UIImageView animateWithDuration:2.0
delay:0.0
options:UIViewAnimationOptionAllowUserInteraction
animations:^{
self.smallLetter.transform = CGAffineTransformScale(self.smallLetter.transform, 0.5, 0.5);
}
completion:^(BOOL finished){
if (!finished) return;
//block letter buttons
[self.bigLetterButton setUserInteractionEnabled:YES];
[self.smallLetterButton setUserInteractionEnabled:YES];
//NSLog(@"vieDidLoad animations finished");
}];
}];
}];
}];
一些方式下,
smallLetter
UIImageView
不能正常工作,因为在按下时(通过按钮),bigLetter
可以正确地取消动画...
编辑:我已经使用了这个解决方案,但是缩小smallLetter
UIImageView
仍然存在问题-根本不会取消...solution
编辑2:我已经在下一个/上一个方法的开头添加了这个:- (void)stopAnimation:(UIImageView*)source {
[UIView animateWithDuration:0.01
delay:0.0
options:(UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionAllowUserInteraction)
animations:^ {
source.transform = CGAffineTransformIdentity;
}
completion:NULL
];
}
问题仍然存在... :/ 不知道如何打断动画链中的最后一个字母动画