Это будет зависеть от того, что у вас есть на карточке Marks, но надеюсь, это поможет:
Скриншот рабочего стола Tableau
Если это не поможет, можете Вы расширяете снимок экрана, чтобы были видны карточка Marks, полка Rows и полка Columns.
Если Вы присоедините анимации к нескольким CALayers в отдельном методе, то они все начнут в (эффективно) то же время. Я использую этот подход в головоломке с допущением ошибок, в конце анимаций, я присоединяю следующий этап анимации к любому шару, который нуждается в дальнейшей анимации.
Я анимирую до 60 CALayers за один раз и не испытываю любые задержки между этапами анимации, но я не кэширую анимации в массиве никакого вида, я не уверен в thge наверху, Вы имеете там.
Мои анимации относительно просты, и созданные и приложены к каждому CALayer на лету. Мои спрайты являются квадратом на 60 пкс и используют пару дюжины возможных изображений для представления их содержания.
В некоторых случаях существуют, умножают анимации, которые я могу создать с различным временем начала (использующий beginTime), я связываю их CAAnimationGroup - но Вы не можете предварительно вычислять последующие анимации.
Если бы Вы добавляете 3 анимации к 3 различным слоям все одновременно, и у них есть та же продолжительность, я ожидал бы, что они все анимируют вместе. Какое поведение Вы видите?
Если вы поместите анимацию в CATransaction, CG позаботится о том, чтобы все они выполнялись во время одной и той же итерации основного цикла.
[CATransaction begin]; // все ваши анимации [CATransaction commit];
cp21yos: не могли бы вы подробнее рассказать о своем методе? Я пытаюсь сделать что-то подобное, что включает в себя анимацию нескольких слоев за раз, более одного раза. Вы сказали: «В конце анимации я прикрепляю следующий этап анимации». Вы можете это объяснить? Когда я пытаюсь поместить логику для выполнения дополнительных анимаций в событие animationDidStop, происходит только последняя анимация, а не вся последовательность анимаций.