1 UICollectionViewLayout和UICollectionViewFlowLayout的关系:前者是后者的父类,一般在设置UICollectionViewLayout的layout类型时都是选平铺类型UICollectionViewFlowLayout,存代码创建参考如下:
- (nonnull instancetype)init{
UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
flowLayout.itemSize = kScreenSize.size;
flowLayout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
flowLayout.minimumLineSpacing = 0;
return [super initWithCollectionViewLayout:flowLayout];
}
注意:手码创建UICollectionView时,设置flowLayout必须在init初始化方法中,其他比如initWithCollectionViewLayout:方法中也是不行的,必须在控制器初始化方法中,其他比如CollectionView的pagingEnabled bounces属性设置要在viewDidLoad中设置,在init中设置由于itemSize还没设置好导致错误报错
2 纯代码创建UICollectionViewCell时,如果使用注册单元格来定制cell了,那就不需要判断cell为空再创建的事了,即其代码实现如下:
static NSString * const reuseIdentifier = @"Cell";
- (void)viewDidLoad {
[super viewDidLoad];
//解决分业问题
self.collectionView.pagingEnabled = YES;
//解决第一个 最后一个拖拽留黑的问题
self.collectionView.bounces = NO;
// 注册单元格
[self.collectionView registerClass:[MYGuideCell class] forCellWithReuseIdentifier:reuseIdentifier];
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
MYGuideCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentifier forIndexPath:indexPath];
return cell;
}