使用我以前使用collectionView的旧方法之后,我现在使用Apple的代码片段作为collectionView。问题是我无法实现单元间距的代码,例如,确切的3个单元应该排成一行。
这是我关于单元格间距的旧代码(现在为什么idk不能正常工作..)
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let width = collectionView.frame.width / 3 - 1 // number of cells in a row. now it's 3
return CGSize(width: width, height: width)
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 1.0
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
return 1.0
}
我如何使一切看起来比现在更好?因为现在连续的手机数量取决于iPhone型号。另外,间距也取决于iPhone型号。
答案 0 :(得分:0)
要设置间距或要显示多少个单元格,请使用 UICollectionViewDelegateFlowLayout 。
这是完美的代码:
extension CollectionViewController: UICollectionViewDelegateFlowLayout {
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let width = collectionView.frame.width / 3 - 1
return CGSize(width: width, height: width)
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 1.0
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
return 1.0
}
还要在 viewDidLoad 函数中编写 collectionView?.delegate = self 。