Как сделать повторяемую вложенную анимацию UIView? - PullRequest
0 голосов
/ 18 августа 2011

Мне нужно анимировать птичью муху, где изображение птицы появляется с маленьким пикселем, затем растет и перемещается до средней точки анимации. После этого птица сжимается до маленьких пикселей, но движется вперед, пока не будет достигнута конечная точка. И мне нужно, чтобы эта анимация была повторяемой. Я сделал это с помощью двух анимаций: первая, которая увеличивает изображение и движется, и, в полном блоке, вторая, которая сжимается и движется. Первая анимация имеет параметр повтора, второй - 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 Ответ

4 голосов
/ 18 августа 2011

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

...