How to pause or end a UIView animation via the CALayer

转自 http://alldunne.org/2011/09/how-to-pause-or-end-a-uiview-animation-via-the-calayer/

-(void)pauseLayer:(CALayer*)layer

{

   

    CFTimeInterval paused_time = [layer convertTime:CACurrentMediaTime() fromLayer:nil];

    

    layer.speed = 0.0;

    

    layer.timeOffset = paused_time;

   

}

-(void)resumeLayer:(CALayer*)layer

{

    

    CFTimeInterval paused_time = [layer timeOffset];

    

    layer.speed = 1.0f;

    

    layer.timeOffset = 0.0f;

    

    layer.beginTime = 0.0f;

    

    CFTimeInterval time_since_pause = [layer convertTime:CACurrentMediaTime() fromLayer:nil] - paused_time;

    

    layer.beginTime = time_since_pause;

    

}

原文地址:https://www.cnblogs.com/gaoxiao228/p/2880285.html