Как работает [UIView beginAnimations]? - PullRequest
12 голосов
/ 27 августа 2009

Мне было интересно, как работают анимации в Cocoa Touch. Например:

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];

view1.alpha = 1.0;
view2.frame.origin.x += 100;

[UIView commitAnimations];

Как UIView отслеживает изменения свойств двух представлений?

Я подозреваю, что используется KVO, но действительно ли он наблюдает изменения в каждом представлении между вызовами beginAnimations и commitAnimations?

Любое понимание будет оценено!

Ответы [ 2 ]

12 голосов
/ 29 августа 2009

Упрощенное объяснение:

Все анимации для всех видов обрабатываются в одном стеке, beginAnimations:context: помещает в стек новый активный CAAnimationGroup, а commitAnimations выводит текущую активную группу анимаций.

Если в стеке есть активная группа анимации, то все установщики для анимируемых свойств создадут CAAnimation экземпляров подкласса для обработки этого свойства и добавления затем в активную группу анимации.

Когда появляется последняя анимация, она воспроизводится.

0 голосов
/ 27 августа 2009

Я считаю, что это просто оболочка для старых вызовов CoreAnimation. Посмотрите в API CoreGraphics, вы можете видеть, что есть несколько ключей, которые вы должны установить в словарь, предоставляя начальные и конечные значения для этих ключей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...