小编典典

取消 UIView 动画?

all

是否可以在动画进行时取消UIView动画?还是我必须降到CA级别?

即我做了这样的事情(也许也设置了结束动画动作):

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:duration];
[UIView setAnimationCurve: UIViewAnimationCurveLinear];
// other animation properties

// set view properties

[UIView commitAnimations];

但是在动画完成并且我得到动画结束事件之前,我想取消它(缩短它)。这可能吗?谷歌搜索发现有几个人问同样的问题却没有答案——还有一两个人推测这不可能完成。


阅读 216

收藏
2022-05-22

共1个答案

小编典典

我这样做的方法是为您的终点创建一个新动画。设置一个非常短的持续时间,并确保您使用该+setAnimationBeginsFromCurrentState:方法从当前状态开始。当您将其设置为
YES 时,当前动画将被剪短。看起来像这样:

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:0.1];
[UIView setAnimationCurve: UIViewAnimationCurveLinear];
// other animation properties

// set view properties

[UIView commitAnimations];
2022-05-22