使用UIView动画函数进行动画时,如何等待动画完成?

5

我正在执行一个按钮触摸后的动画。如果用户在当前动画完成前触摸了按钮,我希望新的动画等到当前动画完成后再开始。我该怎么做?

2个回答

12

使用UIView的animateWithDuration包装器的完成变体将其嵌套,如下所示:

[UIView animateWithDuration:1.00 animations:^{
    //animate first!
    } 
                     completion:^(BOOL finished) {
                         [UIView animateWithDuration:1.00 animations:^{
                         //animate the second time.
                         }];
    }];

如果只想让单个动画从当前状态继续播放,可以使用以下代码:

[UIView animateWithDuration:1.00 
                          delay:0.00 
                        options:UIViewAnimationOptionBeginFromCurrentState 
                     animations:^{
                         //animate
                     } 
                     completion:^(BOOL finished){

    }];

太棒了!感谢你提供的简洁解决方案。 - JFS

0

我总是用这个来链接我的动画:

[self performSelector:@selector(animationDone) withObject:nil afterDelay:1.0];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接