为什么 UICollectionView 默认遵循 UICollectionViewDelegateFlowLayout?
Why does UICollectionView conform to UICollectionViewDelegateFlowLayout by default?
我只是对以下在从 xib 文件实例化的 UICollectionViewController
中执行的代码感到困惑:
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section {
return 1.0;
}
在协议 UICollectionViewDelegateFlowLayout
中声明。但是,UICollectionViewController
中没有任何地方表明它符合此协议,如 UICollectionViewController
:
中声明的那样
NS_CLASS_AVAILABLE_IOS(6_0) @interface UICollectionViewController : UIViewController <UICollectionViewDelegate, UICollectionViewDataSource>
总之可以解释为什么 UICollectionViewController
符合 UICollectionViewDelegateFlowLayout
吗?
默认情况下,将集合视图的布局拖入 xib/storyboard 时的 class 是 UICollectionViewFlowLayout
,这就是为什么默认情况下 UICollectionViewDelegateFlowLayout
的委托方法是叫。如果您要在 xib/storyboard 中更改布局对象的 class,将调用特定于 UICollectionViewDelegateFlowLayout
的方法 none。
此外,UICollectionViewController
可能会私下遵守 UICollectionViewDelegateFlowLayout
,也可能不会。这并不重要,因为 class 在技术上 不必明确遵守协议才能实现和响应该协议中的方法。
我只是对以下在从 xib 文件实例化的 UICollectionViewController
中执行的代码感到困惑:
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section {
return 1.0;
}
在协议 UICollectionViewDelegateFlowLayout
中声明。但是,UICollectionViewController
中没有任何地方表明它符合此协议,如 UICollectionViewController
:
NS_CLASS_AVAILABLE_IOS(6_0) @interface UICollectionViewController : UIViewController <UICollectionViewDelegate, UICollectionViewDataSource>
总之可以解释为什么 UICollectionViewController
符合 UICollectionViewDelegateFlowLayout
吗?
默认情况下,将集合视图的布局拖入 xib/storyboard 时的 class 是 UICollectionViewFlowLayout
,这就是为什么默认情况下 UICollectionViewDelegateFlowLayout
的委托方法是叫。如果您要在 xib/storyboard 中更改布局对象的 class,将调用特定于 UICollectionViewDelegateFlowLayout
的方法 none。
此外,UICollectionViewController
可能会私下遵守 UICollectionViewDelegateFlowLayout
,也可能不会。这并不重要,因为 class 在技术上 不必明确遵守协议才能实现和响应该协议中的方法。