UICollectionView用法总结

来源:互联网 发布:手机虚拟机安装windows 编辑:程序博客网 时间:2024/05/20 05:27

为了加深对UICollectionView的理解在这里做一下总结,UICollectionView其实是UITableView的一个延伸,所以用法上其实是很类似的。
UICollectionView,UICollecitonViewController,UICollectionViewCell,UICollectionReusableView,UICollectionViewLayout,UICollectionViewFlowLayout这几个东西经常是联系在一起的,那么他们的作用是什么:

1.UICollectionView

这个就是一个视图

2.UICollectionViewController

这个是一个控制器,遵守UICollectionView的dataSource以及delegate,因此他的作用就是确定好,UICollectionView中每一个单元格的数据来源,因此经常会包含

-(UICollectionViewCell*)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath

同样,这个控制器也需要确定每一个分区的页眉控件和页脚控件的数据来源,因此,经常会包含

-(UICollectionReusableView*)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath

如果使用UIViewController(或者其子类)作为替代UICollectionViewController的控制器,一定要将这个UIViewController设置遵守相应的UICollectionView的dataSource和delegate协议。

3.UICollectionViewCell

这个看名字就很清楚了,作用就是控制每一个单元格内部的样式,一般如果需要自定义每一个单元格里面长什么样子就应该继承这个类,然后用xib文件或者代码创建相应的单元格样式,创建完成以后,需要到UICollectionViewController(或者相应的自定义子类)中,注册相应的可重用单元格identifier(注册xib文件和代码写的类文件函数方法不一样,)
注册xib的方法是

self.collectionView registerNib:nib forCellWithReuseIdentifier:reuseIdentifier];

4.UICollectionReusableView

这个视图(控件)其实专门用来设计UIConllectionView中的页眉控件和页脚控件,用法类似于cell,创建一个UICollectionReusableView的子类,然后在相应的xib文件中设计好样式,然后通过注册到UICollectionViewController中使用,
注册方法如下:

[self.collectionView registerNib:headerNib forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"linkHead"];

(注意这里面的UICollectionElementKindSectionHeader要根据页眉页脚更换)。

5.UICollectionViewLayout

这个类,是用来确定UICollectionView中单元格之间的间距,单元格的大小,页眉页脚控件大小以及可见区域内单元格的各种attributes(包括间隔大小啊,是否位于可见区域啊,等等一系列信息),还有每个单元格所处的位置等。主要是跟布局有关,并不涉及cell(也就是单元格)和页眉页脚内部具体的样式。

6.UICollectionViewFlowLayout

这个类是继承上一个类的,然后本身布局是流布局(也就是横向单元格或者纵向单元格方式的排列,比较齐整),一般作用就是设置单元格大小,页眉页脚控件大小,分区之间的间隔等,可以直接继承这个类,然后在初始载入时设置,也可以间接通过delegate,在相应的UICollectionViewController中实现(也就是设置单元格大小,分区间隔等)这些delegate方法,
直接设置在FlowLayout中写代码

self.itemSize=CGSizeMake(200, 400);      self.scrollDirection=UICollectionViewScrollDirectionVertical;self.sectionInset=UIEdgeInsetsMake(120, 0, 120, 0);self.minimumLineSpacing=50;self.headerReferenceSize=CGSizeMake(300, 200);

或者在UICollectionViewController里面写代码

-(collectionView):layout:sizeForItemAtIndexPath:;-(collectionView):layout:insetForSectionAtIndex:;.........

每一个UICollectionView都要记得设置相应的layout形式。另外提及一点,在storyboard上进行,页眉页脚控件以及cell控件的样式设计和注册要简单很多,虽然最后页眉、cell控件的大小还是要通过代码设置,

0 0
原创粉丝点击