как определить обновление или перезагрузку UICollectionView в разделе настройка UICollectionViewFlowLayout?

#ios #uicollectionview #uicollectionviewflowlayout

Вопрос:

моя настройка UICollectionViewFlowLayout выглядит так:

 override func prepare() {  super.prepare()   // compute all cell frame }  

функция prepare() будет вызвана после изменения любых данных(перезагрузка, вставка, удаление), и все ячейки будут пересчитаны.

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

Комментарии:

1. Вы имеете в виду, что не хотите пересчитывать, если в этом нет необходимости? Можете ли вы реализовать a isRecomputationNeeded и протестировать это в первую prepare очередь ? Нравится if !isRecomputationNeeded() { return }

2. @MedoPaw да, но как это реализовать isRecomputationNeeded ? Из документации prepare(forCollectionViewUpdates: updateItems) вызывается при каждом обновлении(удаляет/вставляет…) в UICollectionView , но этот метод вызывается после prepare() .

3. Да prepare вызывается каждый раз, но, согласно документации, реализация по умолчанию ничего не делает. Поэтому, если вы можете реализовать isRecomputationNeeded и поместить if !isRecomputationNeeded() { return } код в начало, то повторное вычисление не произойдет, если в этом нет необходимости.

4. И каждый раз вы должны решать, требуется ли повторное вычисление. Это связано с вашей бизнес-логикой. например , скажите, что если dataSource останется прежним, то не потребуется перерасчет, верно? Но на самом деле это вам решать.