adicionar células em UICollectionView de baixo para cima utilizando 4,2 Swift

votos
1

Eu estou tentando implementar uma tela de bate-papo usando UICollectionView em Swift 4.2. Já fiz isso. Eu quero melhorá-lo, fazendo as células crescem de baixo para cima, em vez de cima para baixo (mantendo a ordem das mensagens também). Qualquer ajuda? Tentei procurá-lo, ainda sem sucesso.

digite

Publicado 08/11/2018 em 06:43
fonte usuário
Em outras línguas...                            


4 respostas

votos
1

Você tem que fazer tomada coleção vista altura restrição para ele e calcular sua altura células depois que você pode definir a altura de CollectionView. e um caso virá de altura máxima, a sua altura coleção será igual a partir da altura da tela com espaço calcular a sua navegação e textview entrada.

Respondeu 08/11/2018 em 18:50
fonte usuário

votos
0

Você pode modificar a margem interna superior do exibição de coleção como as collectionViewrecargas.

Chame isso no seu 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)
}
Respondeu 09/08/2019 em 19:14
fonte usuário

votos
0

Você tentou

let diff = collectionView.frame.height - collectionView.contentSize.height
if diff > 0 {
    collectionView.contentInset = UIEdgeInsets(top: diff, left: 0, bottom: 0, right: 0)
}
Respondeu 16/07/2019 em 10:48
fonte usuário

votos
0

A maneira mais fácil seria virar a exibição de coleção e suas células: -

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

Fazendo isso vai simplesmente virar o conteúdo do seu CollectionView e não vai exigir que você lidar com qualquer coisa, eu acho

EDIT : -

Para sua exigência, você não deve ser acrescentando elementos ao seu array. Você deve inserir novos objetos como o primeiro elemento da matriz (fonte de dados): -

myArray.insert(element, at: 0)

A fim de obter a ordem correta, você pode simplesmente reverter a matriz

Respondeu 08/11/2018 em 07:21
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more