After a fair amount of trial and error, I have gotten the animation acting in the manner that I want it, as seen here. However, I always feel like I'm writing way too much and too sloppily when trying to use Core Animation.

The animation is as follows:

The view begins with a point of light at the top of the loop.

When the user initiates the timer, the glowing line takes the prescribed amount of time to fill the loop.

When complete, the loop stays lit until acknowledged by the user.

When acknowledged, the tail of the glowing line chases the head and returns to being a single point at the top of the screen.

Repeat

The code controlling the animation is all wrapped in a subclass of UIView:

Where I spent the most time on figuring it out was that I didn't want to discard the animationLayer every time I wanted to reset the animation. I also had to use different methods of defining the animation for the fill and the collapse, which feels wrong, but trying to use the same strategies wasn't getting the results I wanted.