Die UIView-Animation springt zu Beginn

Ich führe diesen Code aus ...

[UIView animateWithDuration:0.2
                      delay:0.0
                    options:UIViewAnimationOptionCurveEaseOut
                 animations:^{

                     CGAffineTransform settingsTransform = CGAffineTransformMakeTranslation(self.settingsView.frame.size.width, 0);
                     CGAffineTransform speedTransform = CGAffineTransformMakeTranslation(-self.speedView.frame.size.width, 0);

                     self.settingsView.transform = settingsTransform;
                     self.speedView.transform = speedTransform;

                 } completion:nil];

Wenn es ausgeführt wird, springen die Ansichten die Hälfte der Transformation in die entgegengesetzte Richtung, bevor sie in die richtige Richtung um eine halbe Position verschoben werden.

Ich habe die Animationsdauer auf 5 Sekunden verlangsamt, aber der anfängliche Sprung erfolgt sofort und die halbe Transformation in die falsche Richtung.

Wenn ich mit diesem Code zurück animiere ...

[UIView animateWithDuration:0.2
                      delay:0.0
                    options:UIViewAnimationOptionCurveEaseOut
                 animations:^{
                     self.settingsView.transform = CGAffineTransformIdentity;
                     self.speedView.transform = CGAffineTransformIdentity;
                 } completion:nil];

Es macht genau das gleiche.

Das Ergebnis ist, dass die letzte Bewegung die Hälfte der gewünschten Transformation ist, da sie die Hälfte der Transformation zuerst in die falsche Richtung springt.

Ich kann wirklich nicht herausfinden, warum das passiert?

Irgendwelche Ideen.

::BEARBEITEN::

Klärung möglicher Unklarheiten.

Ich versuche nicht, diese Ansichten dahin "zurückzuspringen", wo sie sich befinden. Die Ansichten, die ich animiere, sind wie das Bedienfeld am Rand des Bildschirms. Wenn der Benutzer auf "Los" drückt, wird die Ansicht ausgeblendet. Wenn der Benutzer auf "Stopp" drückt, werden die Bedienfelder wieder in die Ansicht verschoben.

Zumindest pflegten sie es. Da ich das automatische Layout (das ich für andere Teile der App benötige) aktiviert habe, kann ich nicht einfach den Rahmen der Ansichten ändern, sodass ich die Transformationsroute eingeschlagen habe.

Sie können diesen Effekt sehen, indem Sie eine Ansicht in einen Ansichts-Controller und eine Schaltfläche einfügen, um die Animation auszuführen.

Vielen Dank

Antworten auf die Frage(8)

Ihre Antwort auf die Frage