我见过暂停/恢复CALayer动画的代码,如下所示:
[暂停]
CALayer *layer = object.icon.layer;
CFTimeInterval pausedTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil];
layer.speed = 0.0;
layer.timeOffset = pausedTime;
[恢复]
CALayer *layer = object.icon.layer;
CFTimeInterval pausedTime = [layer timeOffset];
layer.speed = 1.0;
layer.timeOffset = 0.0;
layer.beginTime = 0.0;
CFTimeInterval timeSincePause = [layer convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime;
layer.beginTime = timeSincePause;
这很好用。问题是如果将新的ViewController推到ViewController堆栈上,或者应用程序进入后台然后返回CALayer动画,立即捕捉到它们的结束位置!
处理有效暂停/取消暂停UIView动画的好方法是什么?我可以在其中最小化应用程序并将其恢复,或者在不丢失动画的情况下更改活动的ViewController!
答案 0 :(得分:0)
我认为在暂停时您需要记住根层的mediaTime,并在应用程序恢复后恢复该值...否则,时间将超过您的应用程序暂停时已经过去的时间。