UICollectionView

来源:互联网 发布:全屋软水 知乎 编辑:程序博客网 时间:2024/06/03 16:27
什么是UICollectionView
在众多移动应用中,能看到各式各样的九宫格界面


在iOS中,要实现九宫格数据展示,最常用的做法就是使用UICollectionView。UICollectionView继承自UIScrollView,因此支持垂直滚动或水平滚动,而且性能极佳。
UICollectionView在iOS6中推出,也是UIKit视图类中的一颗新星。它和UITableView共享API设计,但也在UITableView上做了一些扩展。UICollectionView最强大、同时显著超出UITableView的特色就是其完全灵活的布局结构。UITableView和UICollectionView都是由dataSouredelegate驱动的。

UICollectionViewFlowLayout简介
   UICollectionView进一步抽象了。它将其子视图的位置,大小和外观的控制权委托给一个单独的布局对象。通过提供一个自定义布局对象,你几乎可以实现任何你能想象到的布局。布局继承自UICollectionViewLayout这个抽象基类。iOS6中以UICollectionViewFlowLayout类的形式提出了一个具体的布局实现。
   flow layout可以被用来实现一个标准的布局,这可能是在collection view中最常见的使用案例了。尽管大多数人都这么想,但是Apple很聪明,没有明确的命名这个类为UICollectionViewGridLayout。而使用了更为通用的术语flow layout,这更好的描述了该类的能力:它通过一个接一个的放置cell来建立自己的布局,当需要的时候,插入横排或竖排的分栏符。通过自定义滚动方向,大小和cell之间的间距,flow layout也可以在单行或单列中布局cell。
   UICollectionView需要layout和数据源(dataSource) 来显示数据。
   UICollecitonView会向数据源查询一共有多少行数据以及每一个显示什么数据等,在查询每一个显示什么数据前要确定设置了layout而且itemSize不能小于{0,0}。
   没有设置layout布局对象程序会崩溃。
   没有设置数据源和布局对象的UICollectionView只是个空壳。
   是遵守UITableViewDataSource协议的OC对象,都可以是UICollectionView的数据源。

UICollectionView常用数据源方法
1.调用数据源的下面方法得知一共有多少组数据:
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView;

2.调用数据源的下面方法得知每一组有多少项数据:
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section;

3.调用数据源的下面方法得知每一项显示什么内容:
- (UICollectionViewCell *)collectionView:(UICollectionView *) collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath;

UICollectionView的数据源必须实现第二个方法和第三个方法,第一个方法不实现默认就是1组。

UICollectionViewFlowLayout常用属性

1.cell之间的最小行间距: 
@property (nonatomic)  CGFloat minimumLineSpacing;

2.cell之间的最小列间距:
@property (nonatomic) CGFloat minimumInteritemSpacing;

3.cell的尺寸:                                                                                                                                             
@property (nonatomic) CGSize itemSize;

4.cell的预估尺寸:
@property (nonatomic) CGSize estimatedItemSize;

5.UICollectionView的滚动方向,默认是垂直滚动:
@property (nonatomic) UICollectionViewScrollDirection scrollDirection;

6.HeaderView的尺寸:
@property (nonatomic) CGSize headerReferenceSize;

7.FooterView的尺寸:
@property (nonatomic) CGSize footerReferenceSize;

8.分区的四边距:
@property (nonatomic) UIEdgeInsets sectionInset;


0 0
原创粉丝点击