Question

I need to call a certain method before my animation repeats. I don't know where to place that line of code.

This is my code for animating an object:

[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];
                     }
                 }];

Method called in completion part will not be executed before every repeat but only after whole animation is complete, together with al repeats - which is, in this case - never.

My question is, how to call a method before every animation repeat?

Was it helpful?

Solution

I would suggest refactoring your animation so it does not use UIViewAnimationOptionRepeat. Instead, write a method that executes a single cycle of your animation. Then add a completion method block that calls the method recursively.

You can also put the method call that you want to fire on each iteration of your animation in the completion block.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top