Ich habe mehrere Kernanimationen zur gleichen Zeit. Sie alle haben einen Kontext und eine Animations-ID, wobei der Kontext das Objekt ist, das animiert wird (UIImageView-Objekte). Ich möchte sie anhalten, so dass die Animation nur vorübergehend stoppt, und wenn dann einige Dinge erledigt sind, setze sie fort, um sie abzuschließen. Diese Dinge passieren nur bei sehr schnellen Scrollbewegungen in einem UIScrollView. Ich möchte die Leistung verbessern, indem ich alle laufenden Animationen stoppe, aber nicht die Scroll-Ansicht. Ich habe eine benutzerdefinierte Animation von contentOffset für diese Bildansicht implementiert.
Sie können Ebenenanimationen pausieren, indem Sie die Geschwindigkeit der Animation auf null setzen. Weitere Informationen finden Sie unter die Animation eines Ebenenbaums .
Der einzige Weg, wie ich das verstanden habe, ist folgendes.
Für jede Ansicht, die Sie nicht mehr animieren möchten:
Setzen Sie den Rahmen der Ansicht auf die Präsentationsschicht
Entfernen Sie alle Animationen aus dieser Ansicht
Führen Sie Ihren Bildlauf durch
Animationen neu berechnen
Fügen Sie der Ansicht neue Animationen hinzu
Ich weiß, dass es nicht das ist, was du hören willst, aber es ist nicht so schlimm wie es klingt. Eine gute Möglichkeit, die Ansichten zu verfolgen, die Sie anhalten möchten, besteht darin, ihnen ein vorgegebenes Tag zu geben.
Um Animationen zu entfernen:
[myView.layer removeAllAnimations]
[myView.layer removeAnimationForKey: @ "theAnimationKey"]
Tags und Links iphone core-animation cocoa-touch uikit