Set/Override 在单元格之间填充 UICollectionView
Set/Override Padding In UICollectionView Between Cells
我有一个 UICollectionView,但我 运行 遇到了获取单元格之间填充的问题。理论上,我应该能够将屏幕除以 4,并且我可以获得一个包含 4 个图像的单元格大小,这些图像完全占据了屏幕宽度。但是,它选择不这样做。相反,它创建了 3 个具有巨大填充的图像,如下所示:
_cellSize = CGSizeMake(UIScreen.mainScreen().bounds.width/4,UIScreen.mainScreen().bounds.width/4)
所以我稍微减小了单元格大小以创建一些填充,这更接近但我需要大约一半的填充:
_cellSize = CGSizeMake(UIScreen.mainScreen().bounds.width/4.4,UIScreen.mainScreen().bounds.width/4.4)
所以我试着让单元格变大一点,然后它滚动到下一行并再次放置 3 个带有巨大填充的项目。
_cellSize = CGSizeMake(UIScreen.mainScreen().bounds.width/4.3,UIScreen.mainScreen().bounds.width/4.3)
我可以指定单元格之间的填充,而无需决定如果填充低于 "x" 量,它会创建一个新行吗?比如我可以在新行之前设置阈值填充,比如 0?
我想把它做得这么薄:
您只需要进行正确的计算,包括您想要的边缘 space 以及单元格之间的 space。例如,如果你想要 3 个单元格,边缘和单元格之间有 5 个点,你应该有这样的东西,
override func viewDidLoad() {
super.viewDidLoad()
var layout = self.collectionView.collectionViewLayout as UICollectionViewFlowLayout
layout.sectionInset = UIEdgeInsetsMake(0, 5, 0, 5);
layout.minimumInteritemSpacing = 5; // this number could be anything <=5. Need it here because the default is 10.
layout.itemSize = CGSizeMake((self.collectionView.frame.size.width - 20)/3, 100) // 20 is 2*5 for the 2 edges plus 2*5 for the spaces between the cells
}
我有一个 UICollectionView,但我 运行 遇到了获取单元格之间填充的问题。理论上,我应该能够将屏幕除以 4,并且我可以获得一个包含 4 个图像的单元格大小,这些图像完全占据了屏幕宽度。但是,它选择不这样做。相反,它创建了 3 个具有巨大填充的图像,如下所示:
_cellSize = CGSizeMake(UIScreen.mainScreen().bounds.width/4,UIScreen.mainScreen().bounds.width/4)
所以我稍微减小了单元格大小以创建一些填充,这更接近但我需要大约一半的填充:
_cellSize = CGSizeMake(UIScreen.mainScreen().bounds.width/4.4,UIScreen.mainScreen().bounds.width/4.4)
所以我试着让单元格变大一点,然后它滚动到下一行并再次放置 3 个带有巨大填充的项目。
_cellSize = CGSizeMake(UIScreen.mainScreen().bounds.width/4.3,UIScreen.mainScreen().bounds.width/4.3)
我可以指定单元格之间的填充,而无需决定如果填充低于 "x" 量,它会创建一个新行吗?比如我可以在新行之前设置阈值填充,比如 0?
我想把它做得这么薄:
您只需要进行正确的计算,包括您想要的边缘 space 以及单元格之间的 space。例如,如果你想要 3 个单元格,边缘和单元格之间有 5 个点,你应该有这样的东西,
override func viewDidLoad() {
super.viewDidLoad()
var layout = self.collectionView.collectionViewLayout as UICollectionViewFlowLayout
layout.sectionInset = UIEdgeInsetsMake(0, 5, 0, 5);
layout.minimumInteritemSpacing = 5; // this number could be anything <=5. Need it here because the default is 10.
layout.itemSize = CGSizeMake((self.collectionView.frame.size.width - 20)/3, 100) // 20 is 2*5 for the 2 edges plus 2*5 for the spaces between the cells
}