boo*_*kie 4 ios uicollectionview uicollectionviewlayout uicollectionviewdelegate
我知道UICollectionViewDelegateFlowLayout是协议,而UICollectionViewFlowLayout是类,并且我知道协议和类之间的区别。据我了解,我可以拥有一个遵循UICollectionViewDelegateFlowLayout协议的类,以实现与继承自UICollectionViewFlowLayout的类完全相同的效果。我通过找到协议和类之间的这种关系来得出这个结论:UICollectionViewDelegateFlowLayout ------------- UICollectionViewFlowLayout collectionView:layout:sizeForItemAtIndexPath:---- itemSize collectionView:layout:insetForSectionAtIndex:--- -sectionInset – collectionView:layout:referenceSizeForHeaderInSection:-headerReferenceSize – collectionView:layout:referenceSizeForFooterInSection:-footerReferenceSize
我还在该协议的参考中阅读了以下内容:“该协议中的所有方法都是可选的。如果您未实现特定方法,则流布局委托将在其自己的属性中使用值来获取适当的间距信息”理解是:如果CollectionView具有布局属性和委托流布局,则委托流布局可能会覆盖某些内容。换句话说,我可以同时拥有该协议和更高的优先级。对?
那么,发明能做同样事情的协议和类背后的逻辑是什么?
流布局类是一种“默认”流布局,可在许多(即使不是大多数)情况下使用。如果需要UICollectionViewFlowLayout无法处理的内容,则可以子类化UICollectionViewLayout以提供所添加的功能。
委托方法只是通过委托调用为默认的UICollectionViewFlowLayout提供了一些有限的自定义。
在文档中,“ UICollectionViewDelegateFlowLayout协议定义了一些方法,可让您与UICollectionViewFlowLayout对象进行协调以实现基于网格的布局。该协议的方法定义了项目的大小以及网格中项目之间的间距。”
他们做的事情不一样;提供该协议是为了允许您执行其他操作,而没有委托方法的流布局默认情况下不会执行。该协议实际上为您提供了更多“控制”权。如果不需要,则不必使用委托方法。
没有“优先级”;该协议是可选的。因此,如果不使用UICollectionViewFlowLayout,则不要使用该协议。
| 归档时间: |
|
| 查看次数: |
3419 次 |
| 最近记录: |