iOS - UICollectionView最基本的介绍

人一切的痛苦,本质上都是对自己的无能的愤怒。


目录

1.UICollectionView的基本概念
2.UICollectionViewFlowLayout的基本属性
3.UICollectionView的代理方法


UICollectionView的基本概念

  • UICollectionView是一种新的数据展示方式,简单来说可以把他理解成多列的UITableView.
  • UICollectionView也是UIScrollView的子类,因此也是可以滑动的,可以设置为左右滑动或者上下滑动,当然,由于有了collectionViewLayout,因此,他的布局是比较灵活的,实用性与可编辑性非常强。

UICollectionViewFlowLayout的基本属性

  • 这是可以自定义成为各种布局的关键,有个UICollectionViewDelegateFlowLayout协议,可以实现各种布局,如圆形布局等,下篇文章会对自定义布局有详细介绍。

  • UICollectionViewFlowLayout的所有属性(建议多查看系统文档,这样出新东西了自学能力会强很多)

    • minimumLineSpacing cell间距 这个是与你设置的滑动方向有关的,如果你设置上下滑动,那么这就是cell上下两个之间的最小间距,如果你设置成左右滑动,那么这就是cell左右之间的最小间距

    • minimumInteritemSpacing cell间距 这个与上面那个是相反的,如果你设置为上下滑动,那么这就是cell左右两个之间最小间距,反正亦然

特别注意:这里的两个属性是和你的滑动方向有关的,不是和网上说的minimumLineSpacing是行距,minimumInteritemSpacing是列距,这种是不对的。和滑动方向有关!!!

  • itemSize cell的大小。

  • estimatedItemSize cell预测的大小。如果 UICollectionView 的 layout 是一个 UICollectionViewFlowLayout,只需要将 layout.itemSize = ... 改成 layout.estimatedItemSize = ...。collectionview 就会根据 cell 里面的 autolayout 约束去确定cell 的大小。(iOS8.0及以后)

    • 原理:
      1.collection view 根据 layout 的 estimatedItemSize 算出估计的 contentSize,有了 contentSize collection view 就开始显示
      2.collection view 在显示的过程中,即将被显示的 cell 根据 autolayout 的约束算出自适应内容的 size
      3.layout 从 collection view 里获取更新过的 size attribute
      4.layout 返回最终的 size attribute 给 collection view
      5.collection 使用这个最终的 size attribute 展示 cell
      此处参考 :http://www.cocoachina.com/ios/20141218/10687.html
  • scrollDirection 滑动方向 默认是UICollectionViewScrollDirectionVertical 上下滑动。也可以设置为UICollectionViewScrollDirectionHorizontal左右滑动

  • headerReferenceSize 头部大小

  • footerReferenceSize 尾部大小

  • sectionInset距离上下左右的距离

  • sectionHeadersPinToVisibleBounds:设置是否当元素超出屏幕之后固定头部视图位置,默认NO(iOS9.0及以后)

  • sectionFootersPinToVisibleBounds:设置是否当元素超出屏幕之后固定尾部视图位置,默认NO(iOS9.0及以后)


UICollectionView代理方法

//返回多少个分组
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
    return 1;
}

//每组有多少个cell
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
    return 40;
}

//每个位置显示哪个cell
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    UICollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];
    cell.backgroundColor = [UIColor yellowColor];
    return cell;
}

//点击cell之后执行的操作
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
    
}

//返回YES则可以移动cell的位置 
//这个需要给cell添加手势,然后再在移动中交换cell位置 (下期会有介绍详细使用 及demo)
- (BOOL)collectionView:(UICollectionView *)collectionView canMoveItemAtIndexPath:(NSIndexPath *)indexPath
{
    return YES;
}

以上是UICollectionView的一个最基本的使用的介绍,下期会对这些做个小例子,然后如果文中有任何错误,欢迎指正。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容