Анимации, установленные в collectionView, продолжают перезагружаться

У меня есть collectionView, и в каждой ячейке есть график, который анимируется после загрузки collectionView. Анимация основана на анимации CAShapeLayer, и значение передается из collectionView.

Анимация работает нормально для большинства ячеек. Две вещи, с которыми я сталкиваюсь: 1) Когда я прокручиваю вниз и появляются новые ячейки, начинается анимация для этих вновь появившихся ячеек, но progressLabel появляется только после завершения анимации (что странно). 2) Когда я прокручиваю вверх, ячейки, которые ранее уже анимировались, снова частично анимируются.

Есть ли способ заставить все ячейки анимироваться после загрузки контроллера представления и предотвратить любые дополнительные анимации?

Это продолжение моего предыдущего вопроса, в котором есть код, который я использую для этого: Установка toValue для анимации CAShapeLayer из UICollectionView cellForItemAt indexPath


person rantanplan    schedule 16.12.2017    source источник
comment
В какую функцию вы поместили анимацию? Это .animation.toValue внутри cellForItemAtIndexPath?   -  person LinusGeffarth    schedule 17.12.2017
comment
Не совсем. Я создал константу в своем классе ProgressCirclePath и устанавливаю ее значение в cellForItemAtIndexPath, например так: cell.progressGraphView.percentageValue = CGFloat(deckCellCompletionPercentage[indexPath.item])/100 . Анимация находится в ProgressCirclePath, а значение toValue устанавливается с использованием процентного значения.   -  person rantanplan    schedule 17.12.2017