核心动画的暂停和重用

利用Layer做一些动画的时候,如果我们一直创建重新生成核心动画的时候。系统开销太大了。我们以后再次碰到这些问题的时候尽量利用系统给予我们的资料

https://developer.apple.com/library/ios/qa/qa1673/_index.html去重用这些动画

  

#pragma mark -
#pragma mark ---------------layerAnimalPause
-(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;
    layer.timeOffset = 0.0;
    layer.beginTime = 0.0;
    CFTimeInterval timeSincePause = [layer convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime;
    layer.beginTime = timeSincePause;
}

 附上github上的demo: https://github.com/fuunnyy/Test_pauseLayer

 

posted @ 2016-08-11 16:08  懒懒初阳  阅读(270)  评论(0编辑  收藏  举报