2012-04-19 6 views
7

Jeśli w sekwencji występują dwie animacje, chciałbym usunąć pierwszą animację i rozpocząć drugą animację od bieżącej pozycji. Użyłem [layer removeAllAnimations], aby anulować pierwszą animację przed dodaniem drugiej animacji do warstwy, warstwa zawsze powraca do początkowej pozycji. Wiem, że to domyślna akcja removeAllAnimations, ale chciałbym wiedzieć, czy istnieje sposób, aby ustawić warstwę, aby pozostała aktualną pozycją. Dziękuję bardzo.Jak pozwolić, aby animowany widok pozostał w aktualnej pozycji, gdy [layer removeAllAnimations] o nazwie

Aktualizacja - Wykonałem to, pobierając pozycję presentationLayer i przypisując ją do położenia warstwy modelu. I użyłem także animacji - (void) animationDidStop: (UIAnimation *) zakończona: (BOOL); , aby sprawdzić, czy animacja się zakończyła.

+1

Nie musisz nazywać 'removeAllAnimations' (jeśli jesteś boją się wycieku pamięci). W każdym razie: 'animation.fillMode = kCAFillModeForwards; animation.removedOnCompletion = NO; 'zwykle załatwia sprawę. –

+0

Dziękuję rokjarc. Tak, masz rację, ale chcę anulować pierwszą animację przed jej zakończeniem i rozpocząć drugą. Robię to poprzez uzyskanie położenia presentationLayer i przypisanie go do położenia warstwy modelu. Następnie modyfikuję również metodę delegowania animationDidStop, aby sprawdzić, czy animacja się zatrzymała. – Jason

+0

to też mi pomogło. – iOmi

Odpowiedz

1

Można użyć: myView.frame = [[myView.layer presentationLayer] Ramka]

Powiązane problemy