视图控制器中的多个集合视图-不为所有集合设置委托

我的视图控制器中有2个集合视图,我只想为其中一个设置collectionView sizeForItemAt方法,而不更改另一个视图。

我必须为他们两个都设置其他代表。

  func collectionView(_ collectionView: UICollectionView,layout collectionViewLayout: UICollectionViewLayout,sizeForItemAt indexPath: IndexPath) -> CGSize {
        if (collectionView == collectionView1) {
            return CGSize(width: 158,height: 90)
        } else if (collectionView == collectionView2) {
           let collectionWidth = (collectionView.bounds.size.width - 20) / 3

            return CGSize(width: collectionWidth,height: collectionWidth)
        } 
    }

我不想为collectionview2返回任何内容,因为它的大小是动态的,并且取决于设备的大小。这是由flowLayout完成的。​​
有没有一种方法可以为第一个方法实现?

lavender110 回答:视图控制器中的多个集合视图-不为所有集合设置委托

似乎collectionView1的所有单元格都具有相同的大小。如果是这样,请使用estimatedItemSize。它是UICollectionViewFlowLayout的实例属性。

estimatedItemSize

集合视图中单元格的估计大小。 developer.apple.com

    let layoutOne = UICollectionViewFlowLayout()
    layoutOne.estimatedItemSize =  CGSize(width: 158,height: 90)
    let collectionViewOne = CollectionViewOne(frame: .zero,collectionViewLayout: layoutOne) 

    // CollectionView2 must have its own layout
    let layout =  UICollectionViewFlowLayout()
    let collectionViewTwo = CollectionView(frame: .zero,collectionViewLayout: layout)

如果这样做,请删除collectionView(_:layout:sizeForItemAt:)

本文链接:https://www.f2er.com/2819628.html

大家都在问