CABasicAnimation当前经过的时间

时间:2013-02-24 08:35:02

标签: objective-c xcode core-animation

我只是从一个愚蠢的循环中重写了一个很大的动画(触发drawRect:x次),这是我无法弄清楚的最后一件事。

如何获取动画的当前已用时间?我知道如何获取当前的CFTimeInterval(Is there a way to pause a CABasicAnimation?):

CFTimeInterval currentTime = [self.multiplierLayer convertTime:CACurrentMediaTime() fromLayer:nil];

但是如何使用它来计算从动画开始的那一刻开始的当前经过时间?似乎beginTime始终为0.0,我必须设置动画开始的那一刻,然后从beginTime中提取currentTime吗?

我很抱歉,如果这是一件我很容易忽视的事情,我昨天才开始使用Core Animation。 :)

修改 设置beginTime是的方式,在这里真的不知所措。

1 个答案:

答案 0 :(得分:7)

一种可能更简单的方法来做你想要的是当你创建你的CABasicAnimation时明确设置开始时间,如:

basicAnimation.beginTime = CACurrentMediaTime();

稍后您可以通过以下方式计算出已用时间:

CFTimeInterval elapsedTime = CACurrentMediaTime() - basicAnimation.beginTime;

通过以下方式获得百分比:

progress = elapsedTime / basicAnimation.duration;

(如果您有timeOffset或类似的话,代码会稍微复杂一些。)

相关问题