【问题标题】:Multiple collection view in a view controller - not set delegates for all of them视图控制器中的多个集合视图 - 不为所有集合设置委托
【发布时间】:2020-04-22 22:09:04
【问题描述】:

我的视图控制器中有 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 完成的。
有没有办法只为第一个实现这个方法?

【问题讨论】:

    标签: ios collectionview


    【解决方案1】:

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

    估计项目尺寸

    集合视图中单元格的估计大小。 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:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-16
      • 1970-01-01
      • 2016-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多