Very nice abstraction, reminds me of a similar instance where I used system animations to place new view hierarchies into a tableview’s header based on events generated within custom UITableViewCells.
There are several other built-in system events that can be used to trigger transition between views, handle rotations etc. (e.g. simply changing a tableview header view triggers a number of system animations).
It’d be an interesting exercise to discover the rest of these built-in triggers. I’ve always found building custom animations to be non-trivial and leveraging the built-in delegates are easier; as long as one doesn’t try to also do multi-threading, which can introduce subtle timing bugs.