我就想你回答下UIcollectionView有两种Cell ACell需要实现layoutestimatedItemSize = UICollectionViewFlowLayoutautomaticSize Bell需要实现collectionView UICollectionView layout collectionViewLayout UICollectionViewLayout si
如果UICollectionView中同时存在两种Cell,一种是ACell需要自动估计item的大小,另一种是Bell需要固定大小为CGSize(300,200),可以按照以下步骤进行编写:
-
首先创建一个UICollectionViewFlowLayout的子类,命名为CustomFlowLayout。
-
在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")
}
}
- 在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,并分别设置它们的布局要求
原文地址: https://www.cveoy.top/t/topic/iSr5 著作权归作者所有。请勿转载和采集!