您的位置:首页 > 其它

暂停 继续动画实现方法

2017-07-31 11:26 232 查看
- (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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: