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