禁用补充视图(例如标题)的正确性是什么?有一次我想展示它们(iPhone),有一次我不想展示它们(iPad)。
我目前唯一的想法是在referenceSizeForHeaderInSection
中返回零大小。但我认为这是创建视图的一种开销,而这些视图根本就没有使用过。另一方面,我必须实施collectionView:viewForSupplementaryElementOfKind:atIndexPath:
而我无法返回nil
,因为应用程序崩溃了。
如何在UICollectionView
中禁用补充观点?
答案 0 :(得分:1)
如果您从CGSizeZero
返回collectionView:layout:referenceSizeForHeaderInSection:
,则不会调用委托方法collectionView:viewForSupplementaryElementOfKind:atIndexPath:
。
答案 1 :(得分:0)
Apple Developer API参考说明了collectionView(_:layout:referenceSizeForHeaderInSection:)
:
如果相应滚动维度的大小为0,则不添加标题。
以下Swift 4代码段显示了collectionView(_:layout:referenceSizeForHeaderInSection:)
的可能实现,以便显示或不显示UICollectionView
补充视图:
// MARK: - UICollectionViewDelegateFlowLayout
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {
if UIDevice.current.userInterfaceIdiom == UIUserInterfaceIdiom.pad {
return CGSize.zero
} else {
let flowLayout = collectionView.collectionViewLayout as! UICollectionViewFlowLayout
return flowLayout.headerReferenceSize
}
}