动态调整 UICollectionView 大小以确保没有项目间距
Posted
技术标签:
【中文标题】动态调整 UICollectionView 大小以确保没有项目间距【英文标题】:Adjust UICollectionView Size Dynamically to Ensure No Inter Item Spacing 【发布时间】:2015-10-17 01:56:51 【问题描述】:目标是让 UICollectionView 每行具有特定数量的列,而不管屏幕大小。
目前我正在使用:
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize
//print(collectionView.frame.size.width)
let numberRows:CGFloat = 7
return CGSize(width: collectionView.frame.size.width/numberRows, height: collectionView.frame.size.width/numberRows)
设置单元格的大小,以便它们可以容纳在集合视图中而没有项目间距。但是,集合视图的大小是根据屏幕大小的百分比设置的。如果所需的“numberRows”不均分,则单元格之间会有间距。
如何动态更改集合视图的大小以确保单元格适合而没有间距?如何以更有效的方式实现这一点?
【问题讨论】:
您解决了这个问题吗?我遇到了同样的问题,还没有找到答案。 【参考方案1】:当您设置集合视图的大小时,您可以将其向下舍入为 numberRows 的倍数。这确保了它会平均分配。
如果您使用 AutoLayout,您可以设置集合视图的宽度或高度约束。然后拨打layoutSubviews:
或setNeedsLayout
如果您不使用 AutoLayout,您可以使用 setFrame
或 setBounds
更改集合视图的大小。
【讨论】:
【参考方案2】:你不能在这里打破数学规则。如果你得到一个点/像素太多,你不能把这个像素分成两个半像素。
你可以做的是:
相应地调整集合视图的大小,使单元格的数量完美匹配
接受其中一个单元的大小比其他单元大/小一个像素。 (例如行中的最后一个单元格)
【讨论】:
以上是关于动态调整 UICollectionView 大小以确保没有项目间距的主要内容,如果未能解决你的问题,请参考以下文章
如何在 UICollectionView 中动态调整标题视图的大小?
在非滚动 UICollectionView 中动态调整 UICollectionViewCell 的大小
自动调整UICollectionView高度以调整其内容大小
调整 UICollectionViewCells 的大小以始终填充 UICollectionView