I was wondering how animations work in Cocoa Touch. For example:
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
view1.alpha = 1.0;
view2.frame.origin.x += 100;
[UIView commitAnimations];
How does UIView
tracks the changes to the properties of the two views?
I suspect that KVO is used, but does it really observe the changes to every views between the beginAnimations
and commitAnimations
calls?
Any insight would be appreciated!
A simplified explanation:
All animations for all views are handled on a single stack, beginAnimations:context:
will push a new active CAAnimationGroup
on the stack, and commitAnimations
will pop the current active animation group.
If there is an active animation group on the stack, then all setters for animatable properties will create CAAnimation
subclass instances to handle that property and add then to the active animation group.
When the last animation is popped, it is replayed.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With