1

我只是对UICollectionViewController从 xib 文件实例化的以下代码感到困惑:

- (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

4

1 回答 1

0

默认情况下,集合视图在拖入 xib/storyboard 时的布局类是UICollectionViewFlowLayout,这就是为什么默认调用委托方法的原因UICollectionViewDelegateFlowLayout。如果您要更改 xib/storyboard 中的布局对象的类,则UICollectionViewDelegateFlowLayout不会调用任何特定于的方法。

此外,UICollectionViewController可能私下符合UICollectionViewDelegateFlowLayout,也可能不符合。这并不重要,因为从技术上讲,一个类不必显式地遵循协议来实现和响应该协议中的方法。

于 2016-05-27T21:04:22.470 回答