【问题标题】:How to cancel an animation for a specific context and animationID?如何取消特定上下文和动画 ID 的动画?
【发布时间】:2009-08-22 09:22:44
【问题描述】:

我有一个动画,我是这样开始的:

[UIView beginAnimations:@"doThis" context:self];
[UIView setAnimationDuration:1.5f];
[UIView setAnimationDelay:2.5f];

现在,问题是这个动画被告知在 2.5 秒后开始。但与此同时,可能会发生一些事情,我不再想要动画了。但是,无论发生什么,CA 都会在 2.5 秒后为该事物设置动画。我怎么能说“不,谢谢,不要动画”?

我有其他动画在不同的上下文和 animationID 中进行,所以我不想从应用程序中删除所有动画。实现这一目标的最干净的方法是什么?只是运行另一个具有相同上下文、animationID 和旧目标的废话动画?

【问题讨论】:

    标签: iphone cocoa-touch uikit core-animation


    【解决方案1】:

    如果您重新设置当前动画的属性,那应该会终止动画。如果您设置了动画委托/didStopSelector,则在这种情况下,将使用 kCFBooleanFalse 作为“finished”参数调用该方法。

    【讨论】:

    • 您的意思是将属性设置为动画发生之前的原始状态,或者设置为当前可见状态(来自演示树)?你能再指定“重新设置属性”吗?
    【解决方案2】:

    这里还有一个相关的问题:

    Cancel a UIView animation?

    您可以做的另一件事是将动画代码放入一个方法中,然后使用:

          [self performSelector:@selector(animateMethod) withObject:nil afterDelay:2.5];
    

    然后您可以在“animateMethod”的开头添加一个检查,以查看是否仍应执行动画。但是,如果您想在动画运行时取消动画,这将无济于事。

    【讨论】:

      猜你喜欢
      • 2012-05-22
      • 1970-01-01
      • 2023-03-19
      • 2010-12-24
      • 1970-01-01
      • 2020-12-14
      • 2010-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多