今天使用了自定义UICollectionViewController,发现了布局问题,所以给初学者讲解一下,当我们自定义了UICollectionViewController 就无法设置 UICollectionView的布局样式的问题 ,因为当我们继承了 UICollectionViewController ,它内部的UICollectionViewLayout是只读的无法修改
这个时候你可能会说UICollectionViewController里面不是有个collectionView吗?拿到collectionView 不就可以修改collectionView的布局了吗?这样不行,因为自定义了UICollectionViewController,我们在使用UICollectionViewController 控制器的时候,也就是初始化的时候就需要为UICollectionViewController传入一个布局对象 ,这个时候你再重新布局已经不可以了,所以必须在创建collectionViewColler的时候 传入布局对象,那么如何解决呢?
这个时候就是考验我们对创建对象的理解了 ,我们知道 当我创建一个对象的时候 一般是使用这样的方式:
[[UICollectionViewController alloc] init]
讲到这里 聪明的你 一定知道怎么做了,没错 ,就是在 init方法 上面 做手脚,我们可以在init方法里面设置UICollectionViewController 的布局方式
下面是我的做法:
-(instancetype)init { UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; layout.scrollDirection = UICollectionViewScrollDirectionVertical; layout.minimumLineSpacing = STANDARD_INTERVAL_WIDTH-5; layout.minimumInteritemSpacing = STANDARD_INTERVAL_WIDTH; return [super initWithCollectionViewLayout:layout]; }
这样我们在使用自定义的UICollectionViewController 的时候默认就会有自己定义的流水布局的样式了