Sometimes the built-in animation curves in UIView (or Core Animation for that matter) just don’t cut it.
You want to animate a bouncy ball with (somewhat) realistic physics, or just need to use an animation curve that’s not ease-in, ease-out, ease-in/out, or linear. But writing a bunch of boilerplate code for setting up your CAKeyframeAnimations can really bog down the flow of your UI code.
Note how simple it is and there’s no boilerplate boxing/unboxing of floats or CGPoints.
I decided on the objectProxy business instead of swizzling -[UIView actionForLayer:forKey: to get the changes you want in the value of alpha or center or what have you. If you’re less timid about swizzling, the proxy business could be eliminated.