gpt4 book ai didi

ios - UICollectionViewDelegateFlowLayout UICollectionViewFlowLayout 之间的区别

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:46:02 49 4
gpt4 key购买 nike

我知道 UICollectionViewDelegateFlowLayout 是一个协议(protocol),而 UICollectionViewFlowLayout 是一个类,我知道协议(protocol)和类之间的区别。根据我的理解,我可以让一个类遵循 UICollectionViewDelegateFlowLayout 协议(protocol)来实现与从 UICollectionViewFlowLayout 继承的类完全相同的效果。我通过找到协议(protocol)和类之间的这种关系得出了这个结论:UICollectionViewDelegateFlowLayout ------------ UICollectionViewFlowLayoutcollectionView:layout:sizeForItemAtIndexPath:---- itemSizecollectionView: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/

49 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com