Я хочу, чтобы моя анимация зацикливалась и постепенно замедлялась.Я не думаю, что в этом случае можно использовать свойство «повторы», потому что анимация должна замедляться в конце каждой итерации.Мой план был прост:
1) Создание и инициализация анимации (вне тела цикла for).
2) Создание цикла for.В теле этого цикла установите свойство duration для моей анимации.И запустите анимацию, добавив ее в мое представление (это явная анимация).
3) Дождитесь времени и продолжите выполнение цикла.
Я использовал функцию usleep (), чтобы дождаться, покаанимация заканчивается.На следующей итерации цикла добавляется та же анимация и изменяется ее свойство длительности (увеличивается для замедления анимации).Вот код (весь код для инициализации анимации приведен выше, и он прекрасно работает без следующих модификаций):
for (int i=1; i<10; i++) {
// Find the duration (I simplified this part it depends on i value).
keyframeAnim.duration = ...;
// Add an animation.
[self addAnimation:keyframeAnim forKey:@"loopingLongAnimation"];
// Wait till it stops.
usleep(keyframeAnim.duration);
}
Проблема в том, что это не работает должным образом.Он воспроизводит анимацию только один раз и останавливается.Похоже, я пропустил что-то очень важное для основной анимации.Есть ли более подходящие или подходящие решения для этой цели?Могу ли я использовать временную кривую, чтобы повлиять на всю циклическую анимацию, а не только на примерную часть?
Заранее спасибо.