是否可以在动画进行时取消UIView动画?还是我必须降到CA级别?
UIView
即我做了这样的事情(也许也设置了结束动画动作):
[UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:duration]; [UIView setAnimationCurve: UIViewAnimationCurveLinear]; // other animation properties // set view properties [UIView commitAnimations];
但是在动画完成并且我得到动画结束事件之前,我想取消它(缩短它)。这可能吗?谷歌搜索发现有几个人问同样的问题却没有答案——还有一两个人推测这不可能完成。
我这样做的方法是为您的终点创建一个新动画。设置一个非常短的持续时间,并确保您使用该+setAnimationBeginsFromCurrentState:方法从当前状态开始。当您将其设置为 YES 时,当前动画将被剪短。看起来像这样:
+setAnimationBeginsFromCurrentState:
[UIView beginAnimations:nil context:NULL]; [UIView setAnimationBeginsFromCurrentState:YES]; [UIView setAnimationDuration:0.1]; [UIView setAnimationCurve: UIViewAnimationCurveLinear]; // other animation properties // set view properties [UIView commitAnimations];