Łańcuchy UIView animacje w odstępach czasu

Muszę animować 3 UIViews (fade in / out). 1 czas trwania animacji wynosi 0,6 s (cykl przenikania / zanikania wynosi 0,6 + 0,6 s). Ale muszę uruchomić animacje w 0,2 sekundy.

Pierwsza animacja powinna zostać uruchomiona w ciągu 0,0 sekund.Druga animacja powinna zostać uruchomiona w ciągu 0,2 sekundy.Trzecia animacja powinna zostać uruchomiona w ciągu 0,4 sekundy.

I wszystkie z nich powinny być zapętlone „na czas nieokreślony” (aż do pewnego wyzwolenia).

Co mam w tej chwili:

- (void)playAnimation {
    isAnimated = YES;
    [self animateView:firstView afterDelay:0.0];
    [self animateView:secondView afterDelay:0.2];
    [self animateView:thirdView afterDelay:0.4];
}

- (void)stopAnimation {
    isAnimated = NO;
}

- (void)animateView:(UIView *)animatedView afterDelay:(float)delay {
    if(isAnimated) {
        [UIView animateWithDuration:0.6 delay:delay options:UIViewAnimationOptionTransitionNone
                     animations:^ {
            animatedView.alpha = 1.0;
        } completion:^(BOOL finished) {
            [UIView animateWithDuration:0.6 animations:^ {
                animatedView.alpha = 0.0;
            } completion:^(BOOL finished) {
                [self animateView:animatedView afterDelay:0.0];
            }];
        }];
    }
}

Ten kod działa nieprzewidywalnie. Czasami animacja widoku działa tak, jak chcę (z fazą 0,2 sekundy), czasami zaczyna się w tym samym czasie ... Jaki będzie właściwy sposób, aby to zrobić? Próbowałem także usunąćafterDelay: część z podpisu metody i uruchom taką metodę animateView z dokładnie takim samym efektem:

[self performSelector:@selector(animateView:) withObject:thirdView afterDelay:0.6];

AKTUALIZACJA
Zauważyłem, że animacja „pęka”, gdy w tle występują ciężkie elementy sieciowe (ładowanie dużych obrazów za pomocą AFNetworking). Nie przeszkadza mi, że animacja trochę „zamrozi” (choć wolę nie mieć opóźnień), ale naprawdę chcę, aby fazy wszystkich animacji były połączone (z tą samą różnicą faz).

Aby ułatwić zrozumienie problemu, dodałem wykresy. Y to alfa, X to czas. Top 3 wykresy - co chcę mieć. Dolne - co aktualnie mam. Podświetlony obszar to miejsce, w którym pojawia się problem. Widać, że animacja drugiego widoku zamarza na 0,2 sekundy i synchronizuje się z trzecią. Więc zaczynają migać w tej samej fazie. To tylko przykład. Czasami mogą animować ok, czasami wszystkie 3 widoki „synchronizują się” w kilku rundach animacji i migają w tej samej fazie ...

questionAnswers(5)

yourAnswerToTheQuestion