禁用补充视图

时间:2015-04-03 11:49:22

标签: ios uicollectionview

禁用补充视图(例如标题)的正确性是什么?有一次我想展示它们(iPhone),有一次我不想展示它们(iPad)。

我目前唯一的想法是在referenceSizeForHeaderInSection中返回零大小。但我认为这是创建视图的一种开销,而这些视图根本就没有使用过。另一方面,我必须实施collectionView:viewForSupplementaryElementOfKind:atIndexPath:而我无法返回nil,因为应用程序崩溃了。

如何在UICollectionView中禁用补充观点?

2 个答案:

答案 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
    }
}