我正在重写UICollectionViewDelegateFlowLayout的sizeForItemAt方法。我只想在特定部分中计算大小,然后回退到其他部分的默认流布局行为。
我不完全确定该怎么做,因为我没有子类化,所以我不能只使用超类实现。
朝正确方向的一点将不胜感激。
编辑
我想使用systemLayoutSizeFitting
,如下所示,但是调用sizeForItemAt
时并没有创建单元格。
guard indexPath.section == sectionNumber else {
// This always returns nil as the cell hasn't been created when sizeForItemAt runs
guard let cell = collectionView.cellForItem(at: indexPath) else {
return .zero
}
return cell.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize)
}
return someCalculatedCGSize
我尝试创建自己的布局子类,但是遇到了同样的问题,我有两个全宽单元,自动布局为其提供了约束,然后是一个网格布局,在此之下我可以手动计算尺寸。因此,我想回过头来限制提供前两个单元格的大小。