Как получить прогресс CABasicAnimation? - PullRequest
2 голосов
/ 21 февраля 2012

Для NSAnimation в документации разработчика я нашел метод -addProgressMark. Для CABasicAnimation я не нашел ничего похожего.

CABasicAnimation * rotateLayer = [CABasicAnimation animationWithKeyPath:@"transform.rotation.x"];

Когда прогресс анимации rotateLayer = 50% Я хочу что-то сделать ... Как мне это сделать?

Ответы [ 2 ]

2 голосов
/ 21 февраля 2012

Вы можете использовать NSTimer для этого.

Вы можете узнать, когда анимация начинается, благодаря animationDidStart: методу делегата CAAnimation (из которого CABasicAnimation наследуется, ссылка ).

Поскольку вы знаете, как долго длится анимация (вы устанавливаете продолжительность анимации), вы можете делать все, что вам нужно, когда анимация достигает 50% от ее продолжительности.

Мои 2 цента:)

0 голосов
/ 09 мая 2014

Я думаю, что более элегантный подход будет иметь две анимации.Вы либо запускаете их последовательно с помощью обработчика завершения на первом, либо регистрируете их обоих с помощью CATransaction в начале (с задержкой анимации второй половины), и снова используете обработчик завершения на первом, чтобы выполнить свою логику на полпути.

По крайней мере, так ваш код сфокусирован и локализован.

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