ios - UICollectionViewDelegateFlowLayout UICollectionViewFlowLayout 之间的区别

标签 ios uicollectionview uicollectionviewlayout uicollectionviewdelegate

我知道 UICollectionViewDelegateFlowLayout 是一个协议(protocol),而 UICollectionViewFlowLayout 是一个类,我知道协议(protocol)和类之间的区别。根据我的理解,我可以让一个类遵循 UICollectionViewDelegateFlowLayout 协议(protocol)来实现与从 UICollectionViewFlowLayout 继承的类完全相同的效果。我通过找到协议(protocol)和类之间的这种关系得出了这个结论: UICollectionViewDelegateFlowLayout ------------ UICollectionViewFlowLayout collectionView:layout:sizeForItemAtIndexPath:---- itemSize collectionView:layout:insetForSectionAtIndex:---- sectionInset – collectionView:layout:referenceSizeForHeaderInSection: -- headerReferenceSize – collectionView:layout:referenceSizeForFooterInSection: -- footerReferenceSize

我还阅读了协议(protocol)引用中的以下内容: “此协议(protocol)中的所有方法都是可选的。如果您不实现特定方法,流布局委托(delegate)将使用其自身属性中的值来获取适当的间距信息” 所以我的理解是:如果 CollectionView 具有布局属性和 delegateFlowLayout,则 delegateFlowLayout 可能会覆盖某些内容。换句话说,我可以同时拥有两者,协议(protocol)将具有更高的优先级。对吧?

那么,发明一个协议(protocol)和一个做同样事情的类背后的逻辑是什么?

最佳答案

流布局类是一种“默认”流布局,即使不是大多数情况,它也适用于许多情况。如果您需要 UICollectionViewFlowLayout 无法处理的内容,那么您可以将 UICollectionViewLayout 子类化以提供添加的功能。

委托(delegate)方法仅通过委托(delegate)调用为默认的 UICollectionViewFlowLayout 提供一些有限的自定义。

从文档中,“UICollectionViewDelegateFlowLayout 协议(protocol)定义了一些方法,可以让您与 UICollectionViewFlowLayout 对象协调以实现基于网格的布局。此协议(protocol)的方法定义了网格中项目的大小和项目之间的间距”。

他们做的事情不一样;提供该协议(protocol)是为了让您可以做一些额外的事情,而没有委托(delegate)方法的流布局默认情况下不会做。该协议(protocol)实际上为您提供了更多“控制权”。如果不需要,则不必使用委托(delegate)方法。

没有“优先级”;该协议(protocol)是可选的。所以,如果你不使用 UICollectionViewFlowLayout,你就不会使用该协议(protocol)。

关于ios - UICollectionViewDelegateFlowLayout UICollectionViewFlowLayout 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24047284/

相关文章:

ios - CollectionView 布局在滚动之前不会刷新

swift - 自定义拖放 UICollectionViewLayout 捕捉到网格

objective-c - 如何在 iOS 应用程序中修改来自 NSURLRequest 的 cookie

javascript - React Native AppRegistry 不是可调用模块

ios - 如何根据设备屏幕大小调整 Collection View 单元格的大小?

ios - 如何使用 Swift 制作简单的 Collection View

ios - 如何防止在拖放 TableView 单元格时将数据附加到现有单元格?

iphone - NSFileManager 多实例写入原子性

ios - 将 UICollectionView 的最后一行居中

ios - 带有图像的 CollectionView 网格。图片不适合网格