Swift 2.0:具有不同单元格宽度的集合视图

Swift 2.0: Collection view with different cell widths

我在 ViewController 上有一个简单的集合视图。它是一个单一的、水平滚动的条带。 A 或 B 类型的单元格数量不限。每个 class 单元格具有不同的宽度(A=160,B=40)。

因此集合数组可能是 AABBABAABA,集合视图单元格宽度应根据单元格类型而改变。

我试过在属性中设置单元格宽度。我已经尝试通过标签、isKindOfClass、tintColors、viewDidLoad 等确定要使用的宽度。似乎没有任何效果,所以我认为它比最初想象的要复杂。

我已经实现了以下内容,但它总是选择 160 宽度,因为标签总是被发现为零。我想我缺少布局或其他东西?

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
    if collectionView.cellForItemAtIndexPath(indexPath)?.tag == 111 {
        return CGSize(width: 40, height: 80)
    } else {
        return CGSize(width: 160, height: 80)
    }
}

标签在 didSelectItemAtIndexPath 函数中被识别,但似乎不在尺寸调整函数中。

有人有什么想法吗?

谢谢

我认为一种方法是使用一个数组 属性 来存储宽单元格的索引路径。在委托函数中,您只需这样做:

    return wideCellsIndexPaths.contains(indexPath) ? 
CGSize(width: 160, height: 80) : CGSize(width: 40, height: 80)

如果您只有 2 个单元格,只需在 indexpath.row 的基础上设置条件 避免标签。 希望对你有用。

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
    if indexPath.row == 0 {
        return CGSizeMake(40,80)
    } else {
        return CGSizeMake(160,80)
    }
}