Как заполнить представление коллекции с нуля - быстро - программно

Я разрабатываю контроллер представления чата, и при этом мне нужно отображать последние сообщения всякий раз, когда я загружаю контроллер: я использую collectionView с расположением ячеек один поверх другого.

Это метод, который я реализую, и он работает, но не так хорош, как мне бы хотелось:

  1. загрузить небольшой пакет данных (20 сообщений)

  2. затем прокрутите вниз с помощью этой функции:

     let section = max(collectionView.numberOfSections - 1, 0)
     let row = max(collectionView.numberOfItems(inSection: section) - 1, 0)
     let lastIndexPath = IndexPath(row: row, section: section)
    
     self.collectionView.scrollToItem(at: lastIndexPath, at: .top, animated: true)
    

Помимо того, что всякий раз, когда представление загружается, мне нужно видеть анимацию прокрутки, которая раздражает, я также не хочу загружать ненужные сообщения.

Есть ли способ заполнить представление коллекции, начиная снизу? и заселение с нуля :)

Я также провел много исследований в Интернете, но не нашел ничего полезного и практичного.

Например, этот вопрос предлагает повернуть представление коллекции на 180°, я попробовал, но это дает мне некоторые ошибки с ячейками всякий раз, когда я динамически закрываю клавиатуру. Также раздражает тот факт, что индикатор прокрутки находится слева, а не справа.

Мне любопытно услышать вашу точку зрения.


comment
Вы пробовали self.collectionView.setContentOffset(CGPoint(x: 0, y: CGFloat.infinity), animated: false) прокручивать вниз, как только вы вызываете collectionView.reloadData, вы также можете попробовать установить анимированное свойство на false self.collectionView.scrollToItem(at: lastIndexPath, at: .top, animated: false), чтобы избежать анимации прокрутки   -  person Sandeep Bhandari    schedule 14.03.2021
comment
Я попробовал .infinity, но это выдает ошибку, при установке анимации прокрутки на false сначала отображаются верхние сообщения, а затем вы можете видеть прерывистое движение вниз, что раздражает.   -  person StackGU    schedule 14.03.2021
comment
какую ошибку вы видите, когда используете .infinity? поворот на 180 градусов кажется мне слишком хакерским :|   -  person Sandeep Bhandari    schedule 14.03.2021
comment
Нет, я пытался смешать два ваших предложения self.collectionView.scrollToItem(at: lastIndexPath, at: .top, animated: false), как только я вызываю перезагрузку данных, и это работает, большое спасибо !! @СандипБхандари :)   -  person StackGU    schedule 14.03.2021