Ich erstelle derzeit eine kleine Schaltfläche mit zwei verschiedenen Status. Jeder Zustand wird durch zwei CAShapeLayer
s dargestellt und der Übergang zwischen den Zuständen wird mit einer Reihe von CAKeyframeAnimation
s/CABasicAnimation
s animiert, die alle die Pfadeigenschaft der Formebenen ändern. Meine Frage ist, wie animiere ich einen Zustand ausgehend von einer aktuellen Animation (d. H. Knopf wird während der Animation gedrückt).So erhalten Sie den aktuellen Animationsschritt von einem CAKeyframeAnimation
Normalerweise würde ich die Präsentationsschicht für den aktuellen Eigenschaftswert stellen und eine additive Animation verwenden (wie perfekt here beschrieben), aber da dies ein mehrstufiger Animation ist, würde ich herausfinden muss, welcher Schritt ich derzeit Animieren und ketten Sie dann die entsprechende Animation, um den vorherigen Zustand umzukehren. Aber das ist ziemlich schwierig (ich wollte die ganze Animation removeOnCompletion=false
haben und den Zeitversatz der Animationen abfragen, um herauszufinden, welche Animation gerade aktiv ist und wie weit).
Leider ist das Einstellen der Layer-Geschwindigkeit auf 0.0 und animieren nur die hin und her funktioniert nicht, da ich sekundäre Animationen haben, die sich in der entgegengesetzten Richtung anders verhalten.
Die Verwendung einer benutzerdefinierten Layer-Eigenschaft für die Formebenen scheint umständlich, aber ich könnte eine Fortschrittseigenschaft einfacher mit dem aktuellen Animationsschritt vergleichen.