Animacja UIView przeskakuje na początku

Używam tego kodu ...

[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];

Ale gdy biegnie, widoki przeskakują połowę transformacji w przeciwnym kierunku, zanim ześlizgną się do połowy pozycji we właściwym kierunku.

Spowolniłem czas trwania animacji do 5 sekund, ale początkowy skok jest natychmiastowy, a połowa transformacji w złym kierunku.

Kiedy animuję z powrotem za pomocą tego kodu ...

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

Robi dokładnie to samo.

Rezultat jest taki, że ruch końcowy jest połową pożądanej transformacji, ponieważ najpierw przeskakuje połowę transformacji w złym kierunku.

Naprawdę nie mogę zrozumieć, dlaczego tak się dzieje?

Jakieś pomysły.

::EDYTOWAĆ::

Usuwanie niektórych możliwych niejednoznaczności.

Nie próbuję „odbić” tych widoków z powrotem do miejsca, w którym się znajdują. Widoki, które animuję, są jak panel sterowania na krawędzi ekranu. Gdy użytkownik naciśnie przycisk „przejdź”, widok zsuwa się z drogi. Gdy użytkownik naciśnie przycisk „stop”, panele wsuwają się z powrotem do widoku.

Przynajmniej kiedyś. Od momentu włączenia automatycznego układu (którego potrzebuję dla innych części aplikacji) nie mogę po prostu zmienić ramki widoków, więc poszedłem na trasę transformacji.

Efekt ten można zobaczyć, umieszczając widok w kontrolerze widoku i przycisk uruchamiający animację.

Dzięki

questionAnswers(8)

yourAnswerToTheQuestion