美文网首页iOS学习笔记
关于 UICollectionView的基本使用

关于 UICollectionView的基本使用

作者: Little_Dragon | 来源:发表于2015-09-03 22:05 被阅读323次

    1.关于 collectionView 的个人理解(如果想了解详细,可以去查看官方文档)
    1.1.collectionView 是一个比较特殊的控件, 它继承于 scrollView, 拥有了滑动功能,又拥有类似与 tableView 的缓存池属性(方便与循环利用),而它的子控件的布局又不会像 tableView 那样的死板(只能横向布局).
    1.2.可以认为 collectionView 的出现就是为了解决图片的滚动,以及循环资源消耗的问题.其出现应该比 tableView 晚.

    1. 关于 collectionView 的基本使用问题
      2.1.上面提到 collectionView 可以自由的设置子控件的布局,没有拘束.那么怎么一个自由法呢,不可能你不设置吧,它可没有那么智能(⊙o⊙)哦.
      2.1.1 请看下面的代码.
    // 设置布局因素 : 流水布局(比较常用的布局)
    UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc]init];
    // 创建 collectionView 初始化时加入布局
     UICollectionView *collectionView = [[UICollectionView alloc]initWithFrame:self.view.bounds collectionViewLayout:flowLayout];
     // 只是为了验证 控件已经加到 view 上  ()
     collectionView.backgroundColor = [UIColor redColor];
     [self.view addSubview:collectionView];
    

    2.2. 关于(流水)布局因素的一些属性

    // 字面意思是最小的线的空间, 其实是指横向距离(行与行)
    @property (nonatomic) CGFloat minimumLineSpacing;
    // 竖向距离(列与列)
    @property (nonatomic) CGFloat minimumInteritemSpacing;
    // 项目的大小,其实就是 每个元素的大小,也就是每个 cell 的大小
    @property (nonatomic) CGSize itemSize;
    // 估算cell大小
    @property (nonatomic) CGSize estimatedItemSize 
    // 滚动方向
    @property (nonatomic) UICollectionViewScrollDirection scrollDirection; 
    // 头部相关距离
    @property (nonatomic) CGSize headerReferenceSize;
    // 尾部相关距离
    @property (nonatomic) CGSize footerReferenceSize;
    // 每一组的内边距
    @property (nonatomic) UIEdgeInsets sectionInset;
    

    2.3 关于 collectionView 的内部内容的显示(相似与 tableView 有代理,以及数据源)

    // 一般是将 控制器 设置为 数据源, 也就是在控制器中处理各种数据.
      collectionView.dataSource = self;
    // 关于 cell 的注册
     [collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:collectionCellID];
    // 数据源方法(和 tableView 真的是 一模一样呀)
    // 返回每一组的项目数
        - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
    {
     return 20;
    }
    // 返回每一个 item 的 cell
        - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
    {
      // cell 从缓存池中取, 不能自己创建, 只能通过注册. 自己创建没有重用 ID
        UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:collectionCellID forIndexPath:indexPath];
       // if (cell == nil) {
       //     cell = [[UICollectionViewCell alloc]init];
       // } 
    cell.backgroundColor = [UIColor yellowColor];
     return cell;
    }
    

    相关文章

      网友评论

        本文标题:关于 UICollectionView的基本使用

        本文链接:https://www.haomeiwen.com/subject/rymlcttx.html