美文网首页iOS/Swift/Objc
如何暂停和恢复CALayer动画

如何暂停和恢复CALayer动画

作者: emmet7life | 来源:发表于2016-08-03 10:07 被阅读26次

    官方给的答复在『这里』

    Q: How do I pause all animations in a layer tree?

    A: In order to pause animations in a layer tree, you can take advantage of the fact that a CALayer conforms to the CAMediaTiming protocol. The CAMediaTiming protocol defines, among other things, a speed with which its timeline progresses, which you can use to pause all animations on the target layer. Listing 1 demonstrates how you can do this.

    Listing 1 Pause and Resume animations.

        -(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;
        }
    

    相关文章

      网友评论

        本文标题:如何暂停和恢复CALayer动画

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