Блок завершения Objective C для анимации внутри цикла for (обработка цикла паузы)

У меня есть метод, чтобы добавить, затем исчезнуть метку кнопки (показано ниже):

    -(void)fade:(NSString *)text
 {

     NSLog(@"Starting Fade In for symbol %@",text);
     [self.symbolButton setAlpha:0.0f];
     [self.symbolButton setTitle:text forState:UIControlStateNormal];
     [UIView animateWithDuration:2 animations:^{
         [self.symbolButton setAlpha:1.0f];

     } completion:^(BOOL finished) {

     NSLog(@"Starting Fade Out for symbol %@",text);
    [UIView animateWithDuration:2 animations:^{
    [self.symbolButton setAlpha:0.0f];
    } completion:nil];
    }];
 }

Это работает как задумано. Однако вместо отдельной строки я хочу циклически проходить по содержимому массива (например, постепенное появление "A", постепенное исчезновение "A", постепенное появление "B", постепенное исчезновение "B".....).

В приведенном выше коде блок завершения ожидает завершения перехода, прежде чем начинать переход (хорошо). Однако, если я попытаюсь обработать массив с помощью цикла for (измените метод так, чтобы он принимал действия массива и вложенных элементов в цикле for, который выполняет итерацию массива), цикл циклически завершается немедленно, а не ожидает завершения первого символа.

Есть ли способ использовать блок завершения во втором анимационном действии, чтобы приостановить обработку цикла - или я поступаю неправильно?

1 ответ

Вы можете попробовать это. Я не проверял это, но идея должна работать

NSArray<UIButton*>* arrButtons;
NSString* text;

for (int i = 0 ; i < arrButtons.count; i++) {
    UIButton* b = arrButtons[i];
    b.alpha = 0.0f;
    [b setTitle:text forState:UIControlStateNormal];

    [UIView animateKeyframesWithDuration:2 delay:4*i options:0 animations:^{

        b.alpha = 1.0f;

    } completion:^(BOOL finished) {

        NSLog(@"Starting Fade Out for symbol %@",text);

        [UIView animateWithDuration:2 animations:^{
            b.alpha = 0.0f;
        } completion:nil];

    }];

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