Я сталкивался с некоторыми проблемами с анимацией нескольких CALayers одновременно и надеялся, что кто-то может указать мне в правильном направлении.CALayer: обратный вызов при завершении анимации?
Мое приложение содержит массив CALayer. Положение каждого слоя установлено на (previousLayer.position.y + previousLayer.bounds.height)
, что в основном выставляет их аналогично таблице. Затем у меня есть метод, который каждый раз, когда он вызывается, добавляет новый слой в стек и устанавливает его положение Y равным 0. Положения Y всех остальных слоев в массиве затем смещаются на высоту нового слой (по существу, нажав все старые слои вниз).
У меня возникают проблемы с предотвращением добавления новых слоев до тех пор, пока предыдущая анимация не завершится. Есть ли способ сказать, когда неявная анимация закончилась? Или, наоборот, если я использую CABasicAnimation
и animationDidFinish
, есть ли способ узнать, какой объект завершил анимацию, когда вызывается animationDidFinish
?
Это работало в основном. Код вызывается, и я могу вернуть объект слоя из ключа. Но я испытываю эффект мерцания, когда пытаюсь установить layer.position в положение, в котором слой должен находиться в конце анимации. Похоже, что анимация заканчивается, и позиция слоя возвращается в исходную позицию до того, как вызывается вызов 'layer.position ='. Любая идея, как я могу обойти это? – carloe
Да. Если вы хотите установить свойство position в конце анимации, вам придется отключить неявную анимацию в транзакции в вашем -animationDidStop: finished: method. Я обновляю свой ответ с соответствующим кодом. –
Код, который вы опубликовали, идентичен тому, что у меня был, и вызвал мерцание. Я просто понял, как обойти его и выведет код за секунду. Спасибо за вашу помощь! – carloe