目标是让每行具有特定列数的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”不均匀分配,则单元格之间会有间距。
如何动态更改集合视图大小以确保单元格无间距?如何以更有效的方式实现这一目标?
答案 0 :(得分:0)
设置集合视图的大小时,可以将其向下舍入为numberRows的倍数。这可以确保它均匀分配。
如果您使用的是AutoLayout,则可以设置集合视图的宽度或高度约束。然后致电layoutSubviews:
或setNeedsLayout
如果您没有使用AutoLayout,则可以使用setFrame
或setBounds
更改集合视图的大小。
答案 1 :(得分:0)
你不能在这里违反数学规则。如果你得到一个点/像素,你不能将这个像素分成两个半像素。
你能做的是:
相应地调整集合视图的大小,以便完美匹配单元格数
接受其中一个单元格将比其他单元格具有更多/更少的像素。 (例如,行中的最后一个单元格)