免费开源的iOS开发学习平台

UICollectionView详解:3-最简单的集合视图实现

本节内容通过示例代码演示了如何创建一个最简单的集合视图,从而验证了集合视图的初始化方法、单元格注册以及数据源协议的实现。

UICollectionView对象的创建

  • 创建一个Single View Application工程

  • 在ViewController.m中,设置控制器类遵守UICollectionViewDataSource协议,并且添加一个UICollectionView类型的属性

@interface ViewController ()<UICollectionViewDataSource>
@property(nonatomic,strong)UICollectionView *collectionView;
@end
  • 当通过代码创建UICollectionView对象的时候,必须传递一个UICollectionViewLayout类型的对象作为参数。注意,这里我们提前创建的是UICollectionViewFlowLayout对象,而不是UICollectionViewLayout对象。UICollectionViewLayout是UICollectionViewFlowLayout的父类。
- (UICollectionView *)collectionView {
    if (_collectionView == nil) {
        UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc]init];
        _collectionView = [[UICollectionView alloc]initWithFrame:self.view.bounds collectionViewLayout:flowLayout];
        _collectionView.dataSource = self;
        _collectionView.backgroundColor = [UIColor whiteColor];
    }
    return _collectionView;
}

注册单元格

我们通常可以在viewDidLoad中注册集合视图中的单元格Cell,或者在创建集合视图对象时就注册单元格。

- (void)viewDidLoad {
    [super viewDidLoad];
    [self.view addSubview:self.collectionView];
    [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"cell"];
    
}

数据源方法的实现

在创建集合视图时,预先设置其dataSource属性,指定数据源,通常情况下是控制器对象,然后实现UICollectionViewDataSource协议中定义的必选方法。在下方的示例代码中,我们创建了100个类型为UICollectionViewCell的单元格,并且设置单元格的背景颜色为黄色。

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
    return 100;
}
- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];
    cell.backgroundColor = [UIColor yellowColor];
    return cell;
}

运行效果:

示例代码

https://github.com/99ios/8.3.3