我正在使用块级技术做一些动画。我想在某些条件的基础上停止动画。如何阻止动画完成?
以下是我的动画代码:
[UIView animateWithDuration:2.0 delay:0.0 options:UIViewAnimationOptionAllowUserInteraction
animations:^{
if([arrAns count]>0)
vwb1.center = CGPointMake(260, 40);
}
completion:^(BOOL finished){
[UIView animateWithDuration:1.5 delay:0.0 options:UIViewAnimationOptionAllowUserInteraction
animations:^{
if([arrAns count]>1)
vwb2.center = CGPointMake(260, 100);
}
completion:^(BOOL finished){
[UIView animateWithDuration:1.0 delay:0.0 options:UIViewAnimationOptionAllowUserInteraction
animations:^{
if([arrAns count]>2)
vwb3.center = CGPointMake(260, 160);
}
completion:^(BOOL finished){
[UIView animateWithDuration:1.0 delay:0.0 options:UIViewAnimationOptionAllowUserInteraction
animations:^{
if([arrAns count]>3)
vwb4.center = CGPointMake(260, 220);
}
completion:^(BOOL finished){
[UIView animateWithDuration:1.0 delay:0.0 options:UIViewAnimationOptionAllowUserInteraction animations:^{
if([arrAns count]>4)
vwb5.center = CGPointMake(260, 280);
} completion:nil];
}];
}];
}
];
}];
我这里没有任何钥匙所以我不能在钥匙的基础上删除它。还有一个功能,如removeallanimation但我无法使用它。如果有人可以帮助我如何使用它也会没事的。
编辑:好的,我知道怎么做,我正在使用以下代码:
[self.view.layer removeAllAnimations];
但是现在我有问题是我的块级动画还没有开始运行。因此,如果我在第二个块中删除动画,它仍会执行剩余块。我也需要阻止它。
感谢
的Pankaj
答案 0 :(得分:2)
您应该检查finished
变量。只有先前完成(finished == YES
)而未停止时才开始下一个动画(在一个块内)。
+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion
...
的完成强>
动画序列时要执行的块对象 结束。此块没有返回值,只需一个布尔值 指示动画是否实际的参数 在调用完成处理程序之前完成。如果持续时间 动画为0,此块在开头执行 下一个循环循环。