美文网首页
CAAnimation 动画的暂停和恢复

CAAnimation 动画的暂停和恢复

作者: MiniCoder | 来源:发表于2021-01-19 20:09 被阅读0次

    暂停和恢复动画官方文档

    要暂停动画,您可以利用图层采用CAMediaTiming协议并将图层动画的速度设置为0.0的事实。将速度设置为零会暂停动画,直到将值更改回非零值为止。

    -(void)pauseLayer{
        
        CFTimeInterval pausedTime = [self convertTime:CACurrentMediaTime() fromLayer:nil];
        
        // 让CALayer的时间停止走动
        self.speed = 0.0;
        
        // 让CALayer的时间停留在pausedTime这个时刻
        self.timeOffset = pausedTime;
        
    }
    
    #pragma mark 恢复CALayer的动画
    
    -(void)resumeLayer{
        
        CFTimeInterval pausedTime = self.timeOffset;
        
        // 1. 让CALayer的时间继续行走
        self.speed = 1.0;
        
        // 2. 取消上次记录的停留时刻    
        self.timeOffset = 0.0;
        
        // 3. 取消上次设置的时间
        self.beginTime = 0.0;
        
        // 4. 计算暂停的时间(这里也可以用CACurrentMediaTime()-pausedTime)
        CFTimeInterval timeSincePause = [self convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime;
        
        // 5. 设置相对于父坐标系的开始时间(往后退timeSincePause)
        self.beginTime = timeSincePause;
    }
    

    相关文章

      网友评论

          本文标题:CAAnimation 动画的暂停和恢复

          本文链接:https://www.haomeiwen.com/subject/wuuczktx.html