UICollectionView 显示多种尺寸的单元格?

UICollectionView showing cells with multiple sizes?

我的故事板中有一个 UICollectionView,其中有一个 UICollectionViewCell,我已单击并拖动它以使其大小为 100w 100h。我还有一个 swift 文件控制它。代码如下:

override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
    //#warning Incomplete method implementation -- Return the number of sections
    return 4
}


override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    //#warning Incomplete method implementation -- Return the number of items in the section
    return 10
}

override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! UICollectionViewCell

    // Configure the cell

    return cell
}

当我 运行 但是,第一行被拉伸成这样:

如何让它们的大小相同?

您的问题不是 "stretched" 第一行单元格。它是 0 点的部分插入,这导致部分 0 的最后一个单元格与部分 1 的第一个单元格齐平。

您可以通过实施 UICollectionViewDelegateFlowLayout 并设置插入部分来解决此问题。让你的class符合UICollectionViewDelegateFlowLayout,将collectionView.delegate设置为self,实现UICollectionViewDelegateFlowLayout想要的功能。相关委托职能包括:

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat