动态调整UICollectionView大小以确保没有项间距

时间:2015-10-17 01:56:51

标签: ios xcode swift uiscrollview uicollectionview

目标是让每行具有特定列数的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”不均匀分配,则单元格之间会有间距。

如何动态更改集合视图大小以确保单元格无间距?如何以更有效的方式实现这一目标?

2 个答案:

答案 0 :(得分:0)

设置集合视图的大小时,可以将其向下舍入为numberRows的倍数。这可以确保它均匀分配。

如果您使用的是AutoLayout,则可以设置集合视图的宽度或高度约束。然后致电layoutSubviews:setNeedsLayout

如果您没有使用AutoLayout,则可以使用setFramesetBounds更改集合视图的大小。

答案 1 :(得分:0)

你不能在这里违反数学规则。如果你得到一个点/像素,你不能将这个像素分成两个半像素。

你能做的是:

  • 相应地调整集合视图的大小,以便完美匹配单元格数

  • 接受其中一个单元格将比其他单元格具有更多/更少的像素。 (例如,行中的最后一个单元格)