我有一个标签栏控制器和一个视图控制器A,vc A有另一个视图控制器B的推送。
此外,我的标签栏项目中有一个按钮,动画效果为10秒,然后在完成动画中恢复到初始状态。
一切正常,动画不会在推或弹出时停止(因为它在子vc上被调用,所以我的标签栏控制器不会消失),除非我将A控制器推到B,然后用快速滑动将B弹出到A.
快速滑动后,所有动画停止,但因为我有一个两个动画的链,第二个在第一个动画中被调用'完成块。所以我的按钮只是冻结而且无法互动,因为它的动画仍在进行中#34;但第二个动画永远不会结束,因为快速滑动禁用了UIVIew动画。这是代码示例:
- (void)animateButton {
[UIView animateWithDuration:1
delay:0
options:UIViewAnimationOptionAutoreverse | UIViewAnimationOptionAllowUserInteraction
animations:^{
[UIView setAnimationRepeatCount:5];
myButton.transform = CGAffineTransformMakeScale(2, 2);
}
completion:^(BOOL finished) {
[UIView animateWithDuration:2f animations:^{
myButton.transform = CGAffineTransformIdentity;
} completion:^(BOOL finished2) {
//
}];
}];
}
}
因此它在完成时冻结:^(BOOL finished)
阻止,并且完成:永远不会调用^(BOOL finished2)
。
P.S。我可以完成:如果我写dispatch_async:
,则会调用^(BOOL finished2)
completion:^(BOOL finished) {
[UIView animateWithDuration:2f animations:^{
dispatch_async(dispatch_get_main_queue(), ^{
myButton.transform = CGAffineTransformIdentity;
});
} completion:^(BOOL finished2) {
self.animating = NO;
}];
}];
但它仍然没有动画2秒,它只是立即完成:^(BOOL finished2)(我猜因为快速滑动所有UIView动画都停止了)