heychenbin
1/28/2014 - 2:54 AM

由于layer实现了CAMediaTiming协议,可以设置speed为0来实现暂停或恢复动画。 注意这里pausedTime的用法。

由于layer实现了CAMediaTiming协议,可以设置speed为0来实现暂停或恢复动画。

注意这里pausedTime的用法。

-(void)pauseLayer:(CALayer*)layer
{
    CFTimeInterval pausedTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil];
    layer.speed = 0.0;
    layer.timeOffset = pausedTime;
}

-(void)resumeLayer:(CALayer*)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;
}