gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 20:54:03 24 4
gpt4 key购买 nike

在我的应用程序中,我有一个 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;
}


}

最佳答案

- (void)applicationDidEnterBackground:(UIApplication *)application {

mosquitosViewController *mvc = [[mosquitosViewController alloc] init];
[mvc pauseLayers];

}

你在上面尝试做的问题是你正在创建一个全新的 View Controller 实例,这不是屏幕上显示的那个。这就是为什么当您发送 pauseLayers 时什么也没有发生的原因信息。

您应该做的是注册以接收您的应用程序何时进入和来自后台的通知,并在该通知到达时调用适当的方法( pauseLayersresumeLayers )。

您应该在 mosquitosViewController 的某处添加以下代码实现(我通常在 viewDidLoad 中这样做):
// Register for notification that app did enter background
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(pauseLayers)
name:UIApplicationDidEnterBackgroundNotification
object:[UIApplication sharedApplication]];

// Register for notification that app did enter foreground
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(resumeLayers)
name:UIApplicationWillEnterForegroundNotification
object:[UIApplication sharedApplication]];

关于background - 从多任务处理回来后如何恢复 CAAnimation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6792701/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com