UICollectionView
来源:互联网 发布:全屋软水 知乎 编辑:程序博客网 时间:2024/06/03 16:27
什么是UICollectionView
在众多移动应用中,能看到各式各样的九宫格界面
在iOS中,要实现九宫格数据展示,最常用的做法就是使用UICollectionView。UICollectionView继承自UIScrollView,因此支持垂直滚动或水平滚动,而且性能极佳。
UICollectionView在iOS6中推出,也是UIKit视图类中的一颗新星。它和UITableView共享API设计,但也在UITableView上做了一些扩展。UICollectionView最强大、同时显著超出UITableView的特色就是其完全灵活的布局结构。UITableView和UICollectionView都是由dataSoure和delegate驱动的。
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
- UICollectionView
- UICollectionView
- UICollectionView
- UICollectionView
- UICollectionView
- UICollectionView
- UICollectionView
- UICollectionView
- UICollectionView
- UICollectionView
- UICollectionView
- UICollectionView
- UICollectionView
- UICollectionView
- UICollectionView
- UICollectionView
- UICollectionView
- UICollectionView
- web前端在线编辑器选择
- 多个类的DLL封装及调用
- 亚当·扎加耶夫斯基《关于我母亲 》
- 【tyvj1286】校门外的树2
- 图像滤波 Image Filtering
- UICollectionView
- LaTex文章中插入Visio及Matlab矢量图
- android运行时显示finished with non-zero exit value 1和finished with non-zero exit value 2
- SElinux配置
- 简析cpu
- 文件锁和Python多线程的使用
- 关于http接口防止非法调用的设计方案
- Myeclipse里导入jQuery.js 时出现错误打红叉的解决方法
- Struts+Hibernate 配置文件作用