我有一个用Swift编写的简单UICollectionView
。我的sectionInsets曾经是0,35,0,35,它给了整个collectionView边距左右。我的minimumLineSpacing设置为默认值10,这意味着我的所有单元格之间的边距为10。都好。
然后我将UICollectionView
分为两部分。第一部分用于保存一个单元格,作为创建新单元格的提示(最终将在第2节中介绍)。第二部分包含所有其他单元格(实际内容)。
我的问题是,自从我添加第二部分以来,第1部分中的一个静态单元格与第2部分中的第一个单元格之间的间距不再是35 + 10。我现在试图让这个特殊的间距回到10。
我的想法是添加一个if条件来识别它是第1部分还是第2部分并相应地设置sectionInsets。然而,我不知道应该在哪里以及如何做到这一点。我似乎无法在我的View Controller中调用sectionInsets或FlowLayout。 cellForItemAtIndexPath。我应该在CustomCollectionViewFlowLayout子类中执行此操作吗?这是我在那里的代码。
- (void)awakeFromNib
{
self.itemSize = CGSizeMake(305.0, 407.0);
self.minimumInteritemSpacing = 20.0;
self.minimumLineSpacing = 10.0;
self.scrollDirection = UICollectionViewScrollDirectionHorizontal;
self.sectionInset = UIEdgeInsetsMake(0, 35, 0, 35);
}
这是我的视图控制器中我的部分的代码:
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
if indexPath.section == 0 {
let firstCell = collectionView.dequeueReusableCellWithReuseIdentifier("createCell", forIndexPath: indexPath) as! CreateCollectionViewCell
firstCell.imageView.image = UIImage(named: "puppy3")
return firstCell
} else {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("mainCell", forIndexPath: indexPath) as! MainCollectionViewCell
cell.imageView?.image = self.imageArray[indexPath.row]
return cell
}
}
更新: 我想到了。它通过在我的视图控制器中为UIEdgeInsets类型的sectionInsets添加两个变量然后添加此函数来为我工作:
//Set custom insets per section
func collectionView(collectionView: UICollectionView,layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets {
if section == 0 {
return sectionInsets1
} else {
return sectionInsets2
}
}