Как сделать повторяемую вложенную анимацию UIView?

Мне нужно анимировать птичью муху, где изображение птицы появляется с маленьким пикселем, затем растет и перемещается до средней точки анимации. После этого птица сжимается до маленьких пикселей, но движется вперед, пока не будет достигнута конечная точка. И мне нужно, чтобы эта анимация была повторяемой. Я сделал это с помощью двух анимаций: первая, которая увеличивает изображение и движется, и, в полном блоке, вторая, которая сжимается и движется. Первая анимация имеет параметр повтора, второй - beginFromCurrentState. Проблема в том, что полный блок никогда не вызывался. Чего мне не хватает, может быть, полный блок не работает для повторяющихся анимаций? Вот мой код:

[UIView animateWithDuration:4.0 delay:0 options:(UIViewAnimationCurveEaseIn | UIViewAnimationOptionRepeat | UIViewAnimationOptionAllowUserInteraction) animations:^{
    self.bird1.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1, 1);
    self.bird1.center = bird1MiddlePoint;

} completion:^(BOOL finished){if (finished){

    NSLog(@"doesn't get called");
    [UIView animateWithDuration:4.0 delay:0 options:(UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionAllowUserInteraction) animations:^{

        self.bird1.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.1, 0.1);
        self.bird1.center = bird1EndPoint;} completion:^(BOOL finished){if (finished && !self.gameManager.isPlaying){

            [UIView setAnimationRepeatCount:0];
            [self.bird1 removeFromSuperview];

    }}];        
}}];  

1 ответ

Решение

Если родительская анимация повторяется бесконечно, так как вы установили UIViewAnimationOptionRepeat, он никогда не будет вызывать блок завершения, потому что он никогда не заканчивается. Это так просто.

Другие вопросы по тегам