UICollectionView 使用组合布局在同一部分中查看多个单元格类型
UICollectionView multiple cell types in the same section using Compositional layout
我有两种类型的单元格“ProductCell”和“NoImageProductCell”。
数据由 API 提供,因此我无法控制我将获得的产品类型(有或没有图像)。
如何使用 Compositional Layout 在同一部分以不同的单元格大小显示两种类型。
我最终使用了 NSCollectionLayoutGroup.custom,它可以让您分别调整属于一个组的每个项目的大小。
let items = self.dataSource.snapshot().itemIdentifiers(inSection: 2)
let group = NSCollectionLayoutGroup.custom(layoutSize: groupSize) { (env) -> [NSCollectionLayoutGroupCustomItem] in
var customItems = [NSCollectionLayoutGroupCustomItem]()
items.forEach { (object) in
switch object.imageURL {
case .none:
//calculate frame and append item
customItems.append(NSCollectionLayoutGroupCustomItem(frame: yourFrame))
case .some(_):
//calculate frame and append item
customItems.append(NSCollectionLayoutGroupCustomItem(frame: yourFrame))
}
}
return customItems
}
我有两种类型的单元格“ProductCell”和“NoImageProductCell”。 数据由 API 提供,因此我无法控制我将获得的产品类型(有或没有图像)。
如何使用 Compositional Layout 在同一部分以不同的单元格大小显示两种类型。
我最终使用了 NSCollectionLayoutGroup.custom,它可以让您分别调整属于一个组的每个项目的大小。
let items = self.dataSource.snapshot().itemIdentifiers(inSection: 2)
let group = NSCollectionLayoutGroup.custom(layoutSize: groupSize) { (env) -> [NSCollectionLayoutGroupCustomItem] in
var customItems = [NSCollectionLayoutGroupCustomItem]()
items.forEach { (object) in
switch object.imageURL {
case .none:
//calculate frame and append item
customItems.append(NSCollectionLayoutGroupCustomItem(frame: yourFrame))
case .some(_):
//calculate frame and append item
customItems.append(NSCollectionLayoutGroupCustomItem(frame: yourFrame))
}
}
return customItems
}