更改UICollectionView中每个部分的插入

时间:2016-03-23 14:49:09

标签: objective-c swift uicollectionview collectionview sections

我有一个用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
    }
}

0 个答案:

没有答案