对齐集合视图单元格以恰好适合每行3个

我正在尝试制作图像的集合视图,因此每行有3个,两者之间没有间距。

我的集合视图数据源是:

func numberOfSections(in collectionView: UICollectionView) -> Int { return 1 } func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return posts.count } 

这就是它在我的故事板中的设置方式(imageView宽度为125,是375屏幕宽度的三分之一):

在此处输入图像描述

但是,当我运行应用程序并添加一些照片时,它看起来像这样:

在此处输入图像描述

我如何解决这个问题,以便每行看到3张图片? 谢谢你的帮助!

你必须实现

UICollectionViewDelegateFlowLayout

对于间距的东西。

像这样设置collectionViewCells的大小:

 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { let yourWidth = collectionView.bounds.width/3.0 let yourHeight = yourWidth return CGSize(width: yourWidth, height: yourHeight) } 

您还可以添加这些函数以使collectionViewCells的间距正确:

 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets { return UIEdgeInsets.zero } func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat { return 0 } func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat { return 0 } 

1-您必须符合UICollectionViewDelegateFlowLayout

2-你应该实现collectionView(_:layout:sizeForItemAt :)方法,如下所示:

 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { let screenWidth = UIScreen.main.bounds.width let scaleFactor = (screenWidth / 3) - 6 return CGSize(width: scaleFactor, height: scaleFactor) } 

假设最小空格为8 – 例如 – ,

在此处输入图像描述

输出应该是每行三个项目,方形大小。

备注:如果要将单元格之间的空格设置为零,则scaleFactor应为:

 let scaleFactor = (screenWidth / 3) 

希望这有帮助。