小编Dan*_*ari的帖子

如何从多任务处理回来后恢复CAAnimation

在我的应用程序中,我有一个CALayer数组,我已经bezierPath动画.当我关闭并重新打开应用程序时,我的图层不是动画,而是与关闭应用程序之前的位置不同.我已经实现了两个方法,pauseLayer和resumeLayer,当我在我的应用程序中使用两个按钮触发它们时它们工作但是在关闭应用程序后它们将无法工作.代码如下

   - (void)pauseLayers{

    for(int y=0; y<=end;y++)
    {



        CFTimeInterval pausedTime = [car[y] convertTime:CACurrentMediaTime() fromLayer:nil];
        car[y].speed = 0.0;
        car[y].timeOffset = pausedTime;

         standardUserDefaults[y] = [NSUserDefaults standardUserDefaults];


        if (standardUserDefaults[y]) {
            [standardUserDefaults[y] setDouble:pausedTime forKey:@"pausedTime"];
            [standardUserDefaults[y] synchronize];
        }


        NSLog(@"saving positions");


        }


}

-(void)resumeLayers

{  




    for(int y=0; y<=end;y++)
    {




        standardUserDefaults[y] = [NSUserDefaults standardUserDefaults];     
        car[y].timeOffset = [standardUserDefaults[y] doubleForKey:@"pausedTime"];

    CFTimeInterval pausedTime = [car[y] timeOffset];
    car[y].speed = 1.0;
    car[y].timeOffset = 0.0;
    car[y].beginTime = 0.0;

    CFTimeInterval timeSincePause = [car[y] convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime;
    car[y].beginTime = timeSincePause;
        }


}
Run Code Online (Sandbox Code Playgroud)

background core-animation calayer multitasking caanimation

5
推荐指数
1
解决办法
3057
查看次数