pause/resume animations with phaseAnimator

Hi everyone,

I'd like to create a looped animation that can be paused. I achieved it with the new phaseAnimator function, and it works well, except for the pause.

I tried to use the trigger option, but it stops the loop process. I tried to use a local @State var isAnimating: Bool variable, and return something like this

Circle()
   .phaseAnimator(States.allValues, content: { content, state in
      if isAnimating {
         // do whatever animation
      } else {
         content
      }
   }, animation: { state in 
      guard isAnimating else { return nil } // no animation
      // return the desired animation for the state
   }

For some reasons, when I stop the animation, it enters some kind of infinite loop that crashes the app.

I then tried to add a pause case to my enum and return no animation and no AnimationCurve when using this mode. Same as before (crashes when pausing)

Do you know how can I achieve that (pausable looped animation) ? Maybe phaseAnimation is not the way to go ?

Thanks

Now that iOS17 is out, it's not beta anymore <3 Any help would be appreciated! Thanks

Ok so the crash comes indeed from the phaseAnimator still running even if the view is dismissed, like if there was some kind of retain cycle. Any idea how to fix that ? Thanks

pause/resume animations with phaseAnimator
 
 
Q