2009-11-19 4 views
0

У меня возникли проблемы с получением CoreAnimation для последовательного выполнения нескольких анимаций на симуляторе iPhone. У меня есть много слоев в моем приложении, которые я аниматирую - эти слои - все подслои уровня, связанного с UIView в моем приложении. После того, как анимировать позицию первого подслоя (используя явную анимацию - CAKeyFrameAnimation), я следующий в методе делегата animationDidStop:Невозможно увидеть вторую анимацию, запущенную с отдельной анимацииDidStop

  1. я удалить слой из его superlayer
  2. я начала CATransaction анимировать 2 других подслоев 'одновременно - эти слои также анимируются явно с отдельными CAKeyframeAnimations, добавленными к соответствующим слоям.
  3. Затем я повторно использую 1-й уровень с другим содержимым и добавляю его обратно в суперслое в отдельной позиции (намеренно не анимированный).

Когда я запускаю мое приложение, я вижу первую анимация происходит, слой затем получает удаляется, а слой добавляется обратно с новым содержанием в новом положении, но я никогда не видел анимацию из 2-х слоев Шаг 2. Интересно, что я получаю вызовы animationDidStop для каждого из 2-х слоев, анимированных в транзакции. Поскольку я получаю эти вызовы, кажется, что анимация происходит, но анимации не отображаются на экране. Я также попытался удалить транзакцию, если у меня не было такой настройки, и я вижу те же результаты.

Возможно ли связать несколько анимаций таким образом?

Любые идеи или предложения приветствуются. Заранее спасибо за вашу помощь.

ответ

0

Мое первое предположение заключалось в том, что вы добавляете свою анимацию в анимациюDidStop к слою, который больше не действителен. Конечно, я не знаю, если вы не разместите какой-то код.

Во-вторых, вы должны взглянуть на timing documentation for Core Animation так, как вы это делаете, хотя и функциональны, возможно, не лучший способ. Конкретно рассмотрит в этом разделе:

Протокол синхронизации предоставляет средства исходной анимацию определенного количества секунд в его длительность , используя два свойства: BeginTime и офсета. StartTime указывает количество секунд в , продолжительность анимации должна начинаться и масштабируется до временного диапазона слоя анимации . Значение TimeOffset указывает дополнительное смещение, но составляет , указанное в локальном активном времени. Оба значения объединяются для определения окончательного начального смещения .