为什么UICollectionViewFlowLayout子类没有委托属性?

时间:2016-08-18 18:21:55

标签: ios uicollectionview

Apple提供UICollectionViewFlowLayout类,以及UICollectionViewDelegateFlowLayout协议,使用

等方法

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat

我的理解是,默认情况下,UICollectionViewController将自己设置为UICollectionViewFlowLayout的委托。所以我假设UICollectionViewFlowLayout有一个委托属性要设置。但如果我将其子类化,就没有这样的东西。默认行为是否仍然适用,自动设置委托?或者我只是误解了它是如何工作的?

2 个答案:

答案 0 :(得分:3)

如果你注意,你会发现.box :hover { background-color:red; } .div box_position :hover{ border-color:black; font-size:20px } 也是UICollectionViewDelegateFlowLayout

UICollectionViewDelegate

因此@protocol UICollectionViewDelegateFlowLayout <UICollectionViewDelegate> 委托也是UICollectionView委托。我对如何实现这一点的猜测是,内部布局做了类似的事情:

UICollectionViewFlowLayout

答案 1 :(得分:0)

delegate属性位于UICollectionView上(与dataSource一样)。 UICollectionViewController只是将自己设置为它拥有的集合视图的委托,您可以继承UICollectionViewController来实现所需的委托方法。

请注意UICollectionViewDelegateFlowLayout继承自UICollectionViewDelegate(这是UICollectionView.delegate所期望的),如果您实现自己的布局类&amp ;,则可以遵循相同的模式。协议