使用Swift 4.2从底部到顶部在UICollectionView中添加单元格

时间:2018-11-08 06:43:01

标签: ios swift uicollectionview

我正在尝试使用Swift 4.2中的UICollectionView实现聊天屏幕。我做完了 我想通过使单元格从底部到顶部而不是从顶部到底部增长来改进它(同时也保持消息的顺序)。有什么帮助吗?我尝试搜索,但仍然失败。

enter image description here

4 个答案:

答案 0 :(得分:1)

最简单的方法是翻转集合视图及其单元格:-

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

这样做,只会翻转CollectionView的内容,我猜不需要您做任何事情

编辑:-

根据您的要求,您不应在数组中附加元素。您应该将新对象作为数组(数据源)的第一个元素插入:-

myArray.insert(element, at: 0)

为了获得正确的顺序,您只需反转数组

答案 1 :(得分:1)

您必须为其设置收集视图高度约束出口,然后计算您的单元格高度,然后才能设置collectionView的高度。一种情况是最大高度,您的集合高度将等于屏幕高度,并计算导航和输入textview的空间。

答案 2 :(得分:1)

您可以在重新加载collectionView时修改集合视图的顶部插图。

在调用reloadData()之后调用它:

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)
}

答案 3 :(得分:0)

您尝试过

let diff = collectionView.frame.height - collectionView.contentSize.height
if diff > 0 {
    collectionView.contentInset = UIEdgeInsets(top: diff, left: 0, bottom: 0, right: 0)
}