控制 UICollectionViewController 中单元格之间的间隙
Controlling the gap between cells in UICollectionViewController
我的单元格似乎有大约20个点的差距,我想控制那个值,但是我找到的关于这个问题的每个答案都不起作用。
我试过:
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
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
return UIEdgeInsets.zero
}
没有任何有用的输出,还有:
layout.minimumLineSpacing = 0
layout.minimumInteritemSpacing = 0
这两行也没有帮助。
请注意,我没有使用故事板!
更改集合视图属性中的值..如下所示..
从逻辑上讲,间距值应基于单元格大小,编辑最小间距会导致行的显示方式。为了更清楚,请考虑以下情况:
要求每行显示2个单元格,每个单元格的宽度应为屏幕宽度的一半,如果最小间距已设置为零,则输出将是:两个单元格都应填满屏幕宽度。
到目前为止一切顺利,但是如果单元格的宽度应该超过屏幕宽度的一半怎么办(假设它应该是宽度的一半 + 2 点) ?输出将是:每行将只包含 1 个单元格,除此之外还有一个与屏幕一半宽度的间隙 - 2 点。
因此,解决方案 是 确保 为单元格设置合适的大小,方法是 collectionView:layout:sizeForItemAtIndexPath: correctly. You might want to check 知道如何实现它。
试试这个
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionat section: Int) -> CGFloat {
print("collectionView===\(collectionView)")
print("collectionViewLayout===\(collectionViewLayout)")
print("section===\(Int(section))")
return 10.0
}
行距
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionat section: Int) -> CGFloat {
print("collectionView===\(collectionView)")
print("collectionViewLayout===\(collectionViewLayout)")
print("section===\(Int(section))")
return 10.0
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionat section: Int) -> UIEdgeInsets {
print("collectionView===\(collectionView)")
print("collectionViewLayout===\(collectionViewLayout)")
print("section===\(Int(section))")
// return UIEdgeInsetsMake(0,8,0,8); // top, left, bottom, right
return UIEdgeInsetsMake(20, 20, 20, 20)
// top, left, bottom, right
}
我的单元格似乎有大约20个点的差距,我想控制那个值,但是我找到的关于这个问题的每个答案都不起作用。
我试过:
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
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
return UIEdgeInsets.zero
}
没有任何有用的输出,还有:
layout.minimumLineSpacing = 0
layout.minimumInteritemSpacing = 0
这两行也没有帮助。
请注意,我没有使用故事板!
更改集合视图属性中的值..如下所示..
从逻辑上讲,间距值应基于单元格大小,编辑最小间距会导致行的显示方式。为了更清楚,请考虑以下情况:
要求每行显示2个单元格,每个单元格的宽度应为屏幕宽度的一半,如果最小间距已设置为零,则输出将是:两个单元格都应填满屏幕宽度。
到目前为止一切顺利,但是如果单元格的宽度应该超过屏幕宽度的一半怎么办(假设它应该是宽度的一半 + 2 点) ?输出将是:每行将只包含 1 个单元格,除此之外还有一个与屏幕一半宽度的间隙 - 2 点。
因此,解决方案 是 确保 为单元格设置合适的大小,方法是 collectionView:layout:sizeForItemAtIndexPath: correctly. You might want to check
试试这个
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionat section: Int) -> CGFloat {
print("collectionView===\(collectionView)")
print("collectionViewLayout===\(collectionViewLayout)")
print("section===\(Int(section))")
return 10.0
}
行距
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionat section: Int) -> CGFloat {
print("collectionView===\(collectionView)")
print("collectionViewLayout===\(collectionViewLayout)")
print("section===\(Int(section))")
return 10.0
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionat section: Int) -> UIEdgeInsets {
print("collectionView===\(collectionView)")
print("collectionViewLayout===\(collectionViewLayout)")
print("section===\(Int(section))")
// return UIEdgeInsetsMake(0,8,0,8); // top, left, bottom, right
return UIEdgeInsetsMake(20, 20, 20, 20)
// top, left, bottom, right
}