我已经搜索了大量SO内容和Apple参考资料,但仍然无法解决我的问题。
是)我有的:
- 连接了2
UIImageView
秒和2UIButton
秒的屏幕 - 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
-根本不取消...
解决方案
EDIT2:我已经在next / prev方法的开头添加了它:
- (void)stopAnimation:(UIImageView*)source {
[UIView animateWithDuration:0.01
delay:0.0
options:(UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionAllowUserInteraction)
animations:^ {
source.transform = CGAffineTransformIdentity;
}
completion:NULL
];
}
问题仍然存在...:/不知道如何中断动画链中字母的最后动画