Зачем мне использовать CAAnimationGroup?

#iphone #ios #core-animation

#iPhone #iOS #ядро-анимация

Вопрос:

У меня проблемы с пониманием основной анимации Apple (для iOS). Я пытаюсь анимировать position и bounds слоя одновременно (но с разными функциями синхронизации).

Согласно документации, CAAnimationGroup позволяет группировать и запускать одновременно несколько анимаций. Но, согласно моим (ранним) экспериментам, этого также можно достичь, добавив несколько объектов анимации на целевой слой. Если да, то какова цель этой CAAnimationGroup?

Ответ №1:

Если вы хотите анимировать два разных свойства с разными функциями синхронизации, то группирование этих анимаций в этом случае не требуется. Я думаю, что группировка полезна, когда вы создаете несколько анимаций и хотите, чтобы они имели одинаковое поведение по времени. Вы можете установить функцию синхронизации для группы. В кулинарной книге Core Animation я видел пример, который показывает, как использовать группировку при настройке временной кривой для CAKeyframeAnimation.

Комментарии:

1. 1, но я не понимаю, почему я должен группировать анимации, когда функции синхронизации одинаковы. Имеет ли значение группировка?

2. В случае group вам не нужно смотреть, имеет ли каждая из анимаций в group надлежащую функцию синхронизации или длительность, она устанавливается один раз.

3. Вот какой-то учебник. Речь идет не о самой группировке, но первый пример кода (используйте интересную анимацию) показывает группировку. И продолжительность установлена на 5 секунд для группы.

4. используйте группировку, чтобы гарантировать, что все анимации начинаются / заканчиваются одновременно, предполагая, что все анимации имеют одинаковую продолжительность, без группировки, добавляя их одну за другой в слой, анимации будут иметь разное время начала

Ответ №2:

Следующая цитата взята из книги «Анимация ядра iOS»

Добавление группы анимации к слою принципиально не отличается от добавления анимаций по отдельности, поэтому не сразу понятно, когда и почему вы будете использовать этот класс. Это обеспечивает некоторое удобство с точки зрения возможности коллективно устанавливать продолжительность анимации или добавлять и удалять несколько анимаций из слоя одной командой, но по-настоящему полезность становится очевидной только тогда, когда речь заходит об иерархическом хронометражировании, что объясняется в главе 9 .