падение кадра при прокрутке с представлением коллекции с использованием анимации Lott ie - PullRequest
0 голосов
/ 15 марта 2020

У меня есть представление коллекции, и у каждой ячейки есть ie представление анимации. Проблема в том, что когда я прокручиваю вниз, приложение замедляется и частота кадров падает. Я думаю, что причиной является ячейка для cellForItemAt делегата, которая имеет назначение всей JSON модели анимации для ячеек, и метод анимации Play продолжает вызываться при каждой прокрутке, что является естественным для представления коллекции.

Я пытался использовать ScrolldidEndDragging и назначать Bool для анимации только ячейки, если перетаскивание закончилось, но она оживляет только определенные ячейки.

Я также пытался применить animation.stop() к override func prepareForReuse(), но кадр все еще упал.

class ScoutsViewController
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: ScoutsCollectionViewCell.reuseIdentifier, for: indexPath) as! ScoutsCollectionViewCell
        let scout = scouts[indexPath.row]
        cell.layer.cornerRadius = 10


        if !(scout.isActive!) {
            cell.animationView.animation = Animation.named(AnimationScout.inactive.rawValue)
        } else if scout.hasFound == 1 {
             cell.animationView.animation = Animation.named(AnimationScout.hasFound.rawValue)
        } else {
             cell.animationView.animation = Animation.named(AnimationScout.active.rawValue)
        }

        cell.animationView.play()
        //cell.animationView.loopMode = .loop
        cell.animationView.backgroundBehavior = .pauseAndRestore
        cell.configure(scouts: scout, index: indexPath.row)

        return cell
    }


class ScoutsCollectionViewCell: UICollectionViewCell {

// MARK: = Stored

// MARK: - IBOutlet

@IBOutlet weak var scoutsCategory: UILabel!
@IBOutlet weak var scoutsBrandLabel: UILabel!
@IBOutlet weak var animationView: AnimationView!

// MARK: - Instance
func configure(scouts: Scouts, index:Int) {
    scoutsBrandLabel.text = scouts.brand ?? "N/A"
    scoutsCategory.text = scouts.category ?? "N/A"
}

// MARK: - View Life Cycle

override func awakeFromNib() {
    super.awakeFromNib()
}
}
...