добавить ячейки в UICollectionView снизу вверх, используя Swift 4.2 - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь реализовать экран чата с использованием UICollectionView в Swift 4.2. Я сделал это. Я хочу улучшить его, заставляя клетки расти снизу вверх, а не сверху вниз (сохраняя при этом порядок сообщений тоже). Любая помощь? Я пытался найти его, но безуспешно.

enter image description here

Ответы [ 4 ]

0 голосов
/ 09 августа 2019

Вы можете изменить верхнюю вставку представления коллекции при перезагрузке collectionView.

Назовите это в вашем cellForItemAt:

func updateCollectionContentInset() {
    let contentSize = yourCollectionView.collectionViewLayout.collectionViewContentSize
    var contentInsetTop = yourCollectionView.bounds.size.height

        contentInsetTop -= contentSize.height
        if contentInsetTop <= 0 {
            contentInsetTop = 0
    }
    yourCollectionView.contentInset = UIEdgeInsets(top: contentInsetTop,left: 0,bottom: 0,right: 0)
}
0 голосов
/ 08 ноября 2018

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

0 голосов
/ 16 июля 2019

Вы пробовали

let diff = collectionView.frame.height - collectionView.contentSize.height
if diff > 0 {
    collectionView.contentInset = UIEdgeInsets(top: diff, left: 0, bottom: 0, right: 0)
}
0 голосов
/ 08 ноября 2018

Самый простой способ - перевернуть представление коллекции и его ячейки: -

cv.transform = CGAffineTransform(scaleX: 1, y: -1)
cell.contentView.transform = CGAffineTransform(scaleX: 1, y: -1)

Это просто перевернет содержимое вашего CollectionView и не потребует от вас обработки, я думаю

EDIT : -

По вашему требованию вы не должны добавлять элементы в ваш массив. Вы должны вставить новые объекты в качестве первого элемента массива (источника данных): -

myArray.insert(element, at: 0)

Чтобы получить правильный порядок, вы можете просто перевернуть массив

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...