Блок анимации - как циклически обрабатывать массив UIImage - PullRequest
0 голосов
/ 13 августа 2011

Я двигаюсь в направлении блочной анимации, пытаясь реализовать несколько анимаций и событие «на финише» с анимациями UIImageView, но безуспешно.

У меня есть массив UIImage, который мне нужно перебирать в обратном направлении, отображая на ходу. Вот то, что я имею до сих пор:

__block int i = 9;
[UIView animateWithDuration:4.0
                 animations:^{
                     self.fooView.image = fooImage[i];
                     [self.view addSubview:self.fooView];
                     i--;
                }
                 completion:NULL];

К счастью, отображается 9-й элемент fooImage [], но он не перебирает все остальные.

Является ли это неправильным пониманием того, что блоки на самом деле могут делать в этом контексте? Я пытался также обернуть цикл while, уменьшив значение «i», но в итоге я получил только первый элемент (я вроде этого и ожидал). Как в этом случае пройти через массив - возможно, иметь 9 различных блоков анимации?

Любые советы будут с благодарностью приняты, и спасибо за ваше время

СБН.

1 Ответ

1 голос
/ 13 августа 2011

Ваш обработчик завершения анимации имеет значение NULL, что означает, что ничего не произошло после завершения анимации. И странно использовать блок анимации, если вы на самом деле ничего не анимируете. Анимации не будут ждать 4 секунды перед вызовом обработчика соревнования, если анимировать нечего.

__block int i = 9;
void(^process)(void(^recursive)());
process = ^(void(^recursive)()) {
    --i;
    [UIView animateWithDuration:4.0
                     animations:^{
                         NSLog(@"%d", i);
                     }
                     completion:^(BOOL finished) {
                         recursive(recursive);
                     }];
};
process(process);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...