UIView动画在从推动segue快速刷回后停止弹出

时间:2017-01-12 12:56:58

标签: ios objective-c iphone xcode animation

我有一个标签栏控制器和一个视图控制器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动画都停止了)

0 个答案:

没有答案