4 Stimmen

CABasicAnimation stoppt beim erneuten Starten der App

Ich stoße auf ein Problem, bei dem ein Neustart meiner iPhone-App dazu führt, dass Animationen stoppen. Genauer gesagt, habe ich die folgende Animation festgelegt und laufen:

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"path"];
animation.duration = 1.0;
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
animation.repeatCount = 1e100f; // Unendlich
animation.autoreverses = YES;
animation.fromValue = animationStartPath;
animation.toValue = animationFinishPath;
[view.layer addAnimation:animation forKey="animatePath"];

Wenn ich die Home-Taste drücke (iOS 4, also noch im Hintergrund "läuft") und dann das Programm neu starte, ist die Animation gestoppt. Gibt es eine Möglichkeit, dies zu verhindern oder sie einfach neu zu starten?

1voto

Matt Long Punkte 24275

Es gibt zwei Methoden im App-Delegierten, über die Sie Informationen an Ihren View-Controller weitergeben können, der die Animation durchführt.

- (void)applicationWillResignActive:(UIApplication *)application
{
  // Machen Sie sich Notizen darüber, ob die Animation läuft oder nicht.
  // Die Verwendung von NSUserDefaults ist wahrscheinlich am einfachsten
}

- (void)applicationDidBecomeActive:(UIApplication *)application
{
  // Überprüfen Sie Ihre Benutzereinstellung, um zu sehen, ob die Animation
  // lief, als die App nicht aktiv war, und starten Sie sie dann neu
}

Natürlich bedeutet dies, dass Sie einen Verweis auf Ihren View-Controller benötigen, der die Animation im App-Delegierten durchführt, oder Sie könnten Benachrichtigungen verwenden, um die Benachrichtigung weiterzuleiten. Wie auch immer, letztendlich müssen Sie darauf achten, dass die App wieder aktiv wird und die Animation neu starten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X