【发布时间】:2011-10-11 04:26:23
【问题描述】:
在我的应用程序中,我有一个沿着 bezierPath 动画的 CALayer 数组。当我关闭并重新打开应用程序时,我的图层没有动画,并且与关闭应用程序之前的位置不同。我已经实现了两种方法,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;
}
}
【问题讨论】:
-
应用进入后台时是否调用了NSLog?
-
是的。那是奇怪的事情:(
-
向我展示您调用 pauseLayers 和 resumeLayers 的应用委托方法。
-
好的,就是这样。我已将其发布在新答案中
-
您应该编辑原始答案,而不是在新答案中添加此代码。
标签: background core-animation calayer multitasking caanimation