Search code examples
iphoneobjective-ciosipadcore-animation

iOS, Restarting animation when coming out of the background


when my app comes out of the background the animation has stopped. which is normal. but i want to restart my animation from the current state. how do i do that without my snapping all over the place.

[UIView animateWithDuration:60 delay:0 options:(UIViewAnimationOptionCurveLinear |UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat | UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionBeginFromCurrentState) animations:^{
    [bg setFrame:CGRectMake(0, 0, 1378, 1005)];
} completion:nil];

i tried putting a set frame in front of the animation but that just makes it snap.

[bg setFrame:CGRectMake(0, 0, 1378, 1005)];

any ideas?


Solution

  • well the answer of @dany_23 could work.

    But I came across an other method that works just fine if you don't need to resume your animation but restart your animation, without the view or layer snapping when you reactivate the app.

    in the

    - (void)applicationWillResignActive:(UIApplication *)application
    

    you call a method in your viewcontroller which implements the following code.

    [view.layer removeAllAnimations];
     // this following CGRect is the point where your view originally started 
    [bg setFrame:CGRectMake(0, 0, 1378, 1005)]; 
    

    and in the

    - (void)applicationDidBecomeActive:(UIApplication *)application
    

    you call a method in your viewcontroller that just starts the animation. something like

    [UIView animateWithDuration:60 delay:0 options:(UIViewAnimationOptionCurveLinear |UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat | UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionBeginFromCurrentState) animations:^{
          [bg setFrame:CGRectMake(0, 0, 1378, 1005)];
    } completion:nil];
    

    Hope this helps, Thanks to all who replied.