У меня есть представление коллекции, и у каждой ячейки есть 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()
}
}