Я разрабатываю контроллер представления чата, и при этом мне нужно отображать последние сообщения всякий раз, когда я загружаю контроллер: я использую collectionView
с расположением ячеек один поверх другого.
Это метод, который я реализую, и он работает, но не так хорош, как мне бы хотелось:
загрузить небольшой пакет данных (20 сообщений)
затем прокрутите вниз с помощью этой функции:
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°, я попробовал, но это дает мне некоторые ошибки с ячейками всякий раз, когда я динамически закрываю клавиатуру. Также раздражает тот факт, что индикатор прокрутки находится слева, а не справа.
Мне любопытно услышать вашу точку зрения.
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.2021false
сначала отображаются верхние сообщения, а затем вы можете видеть прерывистое движение вниз, что раздражает. - person StackGU   schedule 14.03.2021self.collectionView.scrollToItem(at: lastIndexPath, at: .top, animated: false)
, как только я вызываю перезагрузку данных, и это работает, большое спасибо !! @СандипБхандари :) - person StackGU   schedule 14.03.2021