我试图创建一个UICollectionView,所有单元格100%可见,这样我就不需要滚动来查看它们。我目前正在尝试显示一个3x3的网格,并在运行中计算单元格的大小。UICollectionView不滚动
我有一个容器视图中的标题CollectionView和UIView。标题固定在容器顶部,高度为100px。 CollectionView低于此值,固定到每一面,底部,并将其顶部固定到标题底部。
当我使用sizeForItemAt时,我试图找到可见区域的大小,将它分成1/3大小的块(除了填充/插入)。我的代码如下所示:
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAt indexPath: IndexPath) -> CGSize {
let numRows = self.numRows()
let itemsPerRow = self.itemsPerRow()
// let frameSize = collectionView.frame.size
let frameSize = collectionView.bounds.size
// let frameSize = collectionView.collectionViewLayout.collectionViewContentSize
// let frameSize = collectionView.intrinsicContentSize
let totalItemPadding = self.itemPadding * (itemsPerRow - 1)
let totalLinePadding = self.linePadding * (numRows - 1)
let availableWidth = frameSize.width - totalItemPadding
var widthPerItem = availableWidth/itemsPerRow
let availableHeight = frameSize.height - totalLinePadding
var heightPerItem = availableHeight/numRows
return CGSize(width: widthPerItem, height: heightPerItem)
}
结果始终是第3行的一半左右被遮蔽的,因为它看起来像框架尺寸为“高”比实际显示在模拟器。
有什么在UICollectionView这会给我的可见大小?我在布局时间方面错误的时间,还是应该添加另一种方法,在某些时候使尺寸无效?
我还没有找到任何教程显示所有项目的集合视图,并且不垂直滚动,所以任何其他指针(甚至是类似这样的库)都将不胜感激。
谢谢!
,它必须得到一个UICollectionView?基于你的描述你想要什么我想你会更好使用嵌套StackViews – TMin
你应该使用集合视图中的节标题;) – John