- (void)stopAnimationOfLayer:(CALayer *)layer{
//取得暂停时当前时间
CFTimeInterval pause = [layer convertTime:CACurrentMediaTime() fromLayer:nil];
//速度跟开始时间置为0
layer.speed = 0.0;
layer.beginTime = 0.0;
layer.timeOffset = pause;
}
- (void)continueAnimationWithLayer:(CALayer *)layer{
CFTimeInterval pausedTime = [layer timeOffset];
layer.speed = 1.0; // 让CALayer的时间继续行走
layer.timeOffset = 0.0; // 取消上次记录的停留时刻
layer.beginTime = 0.0; // 取消上次设置的时间
// 计算暂停的时间(这里用CACurrentMediaTime()-pausedTime也是一样的)
CFTimeInterval timeSincePause = [layer convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime;
// 设置相对于父坐标系的开始时间(往后退timeSincePause)
layer.beginTime = timeSincePause;
}