2013-12-17 4 views
1

Мне нужно вызвать определенный метод до повторения анимации. Я не знаю, где разместить эту строку кода.Вызовите метод каждый раз, когда повторяется анимация

Это мой код для анимации объекта:

[UIView animateWithDuration:speed 
         delay:delay 
        options:UIViewAnimationOptionAllowUserInteraction|UIViewAnimationOptionCurveLinear|UIViewAnimationOptionRepeat 
       animations:^(void){ 

        cloud.frame = (CGRectMake(cloud.frame.origin.x, cloud.frame.origin.y+600, cloud.frame.size.width, cloud.frame.size.height)); 

       }completion:^(BOOL finished){ 
        if (finished){ 
         [cloud setBackgroundImage:[UIImage imageNamed:@"cloudWhite.png"] forState:UIControlStateNormal]; 
        } 
       }]; 

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

Мой вопрос: как вызвать метод перед повторением каждой анимации?

ответ

5

Я бы предложил рефакторинг вашей анимации, чтобы он не использовал UIViewAnimationOptionRepeat. Вместо этого напишите метод, который выполняет один цикл вашей анимации. Затем добавьте блок метода завершения, который вызывает метод рекурсивно.

Вы также можете поместить вызов метода, который вы хотите запустить на каждой итерации вашей анимации в блоке завершения.

Смежные вопросы