禁用补充视图
Disable supplementary view
禁用补充视图的正确方法是什么(例如header)?有一次我想给他们看 (iPhone),有一次我不想给他们看 (iPad)。
我目前唯一的想法是 return referenceSizeForHeaderInSection
中的大小为零。但我认为创建根本不使用的视图有点开销。另一方面,我必须实施 collectionView:viewForSupplementaryElementOfKind:atIndexPath:
但我不能 return nil
,因为应用程序会崩溃。
如何禁用 UICollectionView
中的补充视图?
如果您 return CGSizeZero
从 collectionView:layout:referenceSizeForHeaderInSection:
委托方法 collectionView:viewForSupplementaryElementOfKind:atIndexPath:
将不会被调用。
Apple Developer API 参考状态 collectionView(_:layout:referenceSizeForHeaderInSection:)
:
If the size in the appropriate scrolling dimension is 0, no header is added.
以下 Swift 5 代码片段显示了 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 {
return CGSize(width: 0, height: 40)
// or
//let flowLayout = collectionView.collectionViewLayout as! UICollectionViewFlowLayout
//return flowLayout.headerReferenceSize
}
}
禁用补充视图的正确方法是什么(例如header)?有一次我想给他们看 (iPhone),有一次我不想给他们看 (iPad)。
我目前唯一的想法是 return referenceSizeForHeaderInSection
中的大小为零。但我认为创建根本不使用的视图有点开销。另一方面,我必须实施 collectionView:viewForSupplementaryElementOfKind:atIndexPath:
但我不能 return nil
,因为应用程序会崩溃。
如何禁用 UICollectionView
中的补充视图?
如果您 return CGSizeZero
从 collectionView:layout:referenceSizeForHeaderInSection:
委托方法 collectionView:viewForSupplementaryElementOfKind:atIndexPath:
将不会被调用。
Apple Developer API 参考状态 collectionView(_:layout:referenceSizeForHeaderInSection:)
:
If the size in the appropriate scrolling dimension is 0, no header is added.
以下 Swift 5 代码片段显示了 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 {
return CGSize(width: 0, height: 40)
// or
//let flowLayout = collectionView.collectionViewLayout as! UICollectionViewFlowLayout
//return flowLayout.headerReferenceSize
}
}