UICollectionView 和 UICollectionViewController 类是iOS6 新引进的API,用于展示集合视图,布局更加灵活,可实现多列布局,用法类似于UITableView 和 UITableViewController 类。
使用UICollectView必须实现UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDelegateFlowLayout三个协议。
UICollectView的组成部分:跟UITableView一样,UICollectView有自己的Cell。有自己的头部视图,尾部视图(Supplementary Views)相当于UITableView的页脚和页眉。有一个用于修饰整个UICollecView的Decoration Views。
在使用UICollectView的时候必须注意的是UICollectViewLayout这个属性。该属性是UICollectView的布局属性。UICollectView跟UICollectViewLayout的关系就跟人的思想跟行为一样。思想控制一个人的行为,在这里UICollectLayout负责界定每一个cell的大小,位置等信息,UICollectView值负责每一个Cell的显示。
UICollectionViewFlowLayout(流式布局)的使用
UICollectViewLayout的子类。称线性布局或者流式布局。
其主要属性有:重点内容
//行间距
@property (nonatomic) CGFloat minimumLineSpacing;
//列间距
@property (nonatomic) CGFloat minimumInteritemSpacing;
//cell的尺寸
@property (nonatomic) CGSize itemSize;
//cell的预计尺寸
@property (nonatomic) CGSize estimatedItemSize;
//滚动的方向
@property (nonatomic) UICollectionViewScrollDirection scrollDirection;
//head的预计尺寸
@property (nonatomic) CGSize headerReferenceSize;
//footer的预计尺寸
@property (nonatomic) CGSize footerReferenceSize;
//UIdgeInsets属性
@property (nonatomic) UIEdgeInsets sectionInset;
例如:
-(void)setflowLayout
{
CGFloat itemW = 40;
CGFloat itemH = itemW * 0.8;
CGFloat itemlineMar = 5;
CGFloat itemInterMar = itemlineMar;
UICollectionViewFlowLayout * flowLayout = [[UICollectionViewFlowLayout alloc]init];
flowLayout.itemSize = CGSizeMake(itemW, itemH);
// flowLayout.estimatedItemSize = CGSizeMake(40, 30);
flowLayout.minimumLineSpacing = itemlineMar;
flowLayout.minimumInteritemSpacing = itemInterMar;
flowLayout.footerReferenceSize = CGSizeMake(SCREEMW, 30);
flowLayout.headerReferenceSize = CGSizeMake(SCREEMW, 30);
flowLayout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0);
flowLayout.scrollDirection = UICollectionViewScrollDirectionVertical||
UICollectionViewScrollDirectionHorizontal;
flowLayout.sectionHeadersPinToVisibleBounds = YES;
flowLayout.sectionFootersPinToVisibleBounds = YES;
self.flowLayout = flowLayout;
}
UIcolllectVFlowLayout常用方法:
/**
根据indexpath设置cell的尺寸