我知道UICollectionViewDelegateFlowLayout是一个协议,而UICollectionViewFlowLayout是一个类,我知道协议和类之间的区别。根据我的理解,我可以遵循UICollectionViewDelegateFludLayout协议的类,以实现与UICollectionViewFlowLayout继承的类完全相同的效果。我通过寻找协议和班级之间的这种关系来达到这一结论: UICollectionViewDelegateFludLayout ------------- UICollectionViewFlowLayout. CollectionView:布局:sizeforitematindexpath:----项目化 CollectionView:布局:InsetforsectionAtIndex:---- SectionEnet - CollectionView:布局:参考资料: - 标题推荐 - CollectionView:布局:参考资料: - FoceFerceize

我还在协议的引用中阅读以下内容: “此协议中的所有方法都是可选的。如果不实现特定方法,则流布局委托将在其自己的属性中使用值为适当的间距信息” 所以我的理解是:如果CollectionView有一个布局属性和DelegateFlowLayout,则DelegateFlowLayout可能会覆盖某些内容。换句话说,我可以拥有两者,协议将需要更高的优先级。右?

所以,逻辑背后的逻辑是一个协议和一个做同样的类的逻辑?

有帮助吗?

解决方案

流量布局类是一种“默认”流布局,在许多情况下工作,如果不是大多数情况。如果您需要UICollectionViewFlowLayout无法处理的内容,那么您可以子类别UICollectionViewLayout提供添加的功能。

委托方法只需通过委派呼叫提供一些有限的自定义,对于默认的UICollectionViewFlowLayout。

从文档中,“UICollectionViewDelegateFlowLayout协议定义了允许您与UICollectionViewFlowLayout对象协调以实现基于网格的布局的方法。本协议的方法定义了网格中项目之间的项目大小和间距”。< / p>

他们不做同样的事情;提供该协议以允许您若要执行额外的流量布局,默认情况下不执行此操作。协议,实际上,为您提供更多“控制”。如果您不需要它们,您不必使用委托方法。

没有“优先级”;协议是可选的。因此,如果您不使用UICollectionViewFlowLayout,则不会使用协议。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top