如果UICollectionView中同时存在两种Cell,一种是ACell需要自动估计item的大小,另一种是Bell需要固定大小为CGSize(300,200),可以按照以下步骤进行编写:

  1. 首先创建一个UICollectionViewFlowLayout的子类,命名为CustomFlowLayout。

  2. 在CustomFlowLayout中重写estimatedItemSize属性,将其设置为UICollectionViewFlowLayout.automaticSize。代码如下:

class CustomFlowLayout: UICollectionViewFlowLayout {
    override init() {
        super.init()
        estimatedItemSize = UICollectionViewFlowLayout.automaticSize
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}
  1. 在UICollectionView的代理方法中,判断indexPath对应的cell类型,如果是ACell,就使用CustomFlowLayout作为collectionView的layout。代码如下:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    if indexPath.item == 0 {
        collectionView.collectionViewLayout = CustomFlowLayout()
        return CGSize(width: collectionView.frame.width, height: 200) // 设置ACell的高度为200,宽度为collectionView的宽度
    } else {
        return CGSize(width: 300, height: 200) // 设置Bell的固定大小为CGSize(300,200)
    }
}

这样就可以实现同时存在两种不同大小的Cell,并分别设置它们的布局要求

我就想你回答下UIcollectionView有两种Cell ACell需要实现layoutestimatedItemSize = UICollectionViewFlowLayoutautomaticSize Bell需要实现collectionView UICollectionView layout collectionViewLayout UICollectionViewLayout si

原文地址: https://www.cveoy.top/t/topic/iSr5 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录