在我的應用程序中,我有一個CALayer數組,我沿着bezierPath動畫。當我關閉並重新打開應用程序時,我的圖層不是動畫,並且與關閉應用程序之前沒有相同的位置。我已經實現了兩種方法,pauseLayer和resumeLayer,它們在我的應用程序中使用兩個按鈕觸發它們時起作用,但在關閉應用程序後它們不起作用。該代碼是以下如何從多任務回來後恢復CAAnimation
- (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? – MiguelB
是的。這是奇怪的事情:( –
向我顯示應用程序委託方法,你叫pauseLayers和resumeLayers。 – MiguelB