【问题标题】:Best way to pause/resume CALayer animation暂停/恢复 CALayer 动画的最佳方式
【发布时间】:2012-10-06 06:33:06
【问题描述】:

我见过暂停/恢复 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!

【问题讨论】:

    标签: iphone sdk resume


    【解决方案1】:

    我认为在暂停时,您需要记住根层的 mediaTime,并在您的应用恢复后恢复该值......否则,时间会随着您的应用暂停时所经过的时间而跳跃。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-31
      • 2018-04-21
      • 1970-01-01
      • 2012-04-06
      • 2012-04-17
      • 2015-07-06
      相关资源
      最近更新 更多