Как сделать повторяемую вложенную анимацию 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
, он никогда не будет вызывать блок завершения, потому что он никогда не заканчивается. Это так просто.