您的位置:首页 > 产品设计 > UI/UE

6.UICollectionViewController和UITableViewController之间的异同

2015-08-26 20:14 549 查看

最近在项目中会用到UICollectionViewController,所以将它与常用的UITableViewController做一个对比:

        两者在使用上大致相同,在初始化之后,都会设置相应的数据源和代理,通过重写相应的数据源和代理方法来进行具体操作,现在着重说一下它们的一些小不同:

1.初始化

       UITableViewController在初始化后,只要实现它的数据源和代理方法,就可以直接展现出来。而UICollectionViewController推荐使用的是initWithCollectionViewLayout:方法,该中会传入一个layout,只有有了这个layout才能显示出来。或者重写init方法,在init方法中设置它的布局方式,也就是layout.

    这个layout可以使用继承自UICollectionViewLayout的两个子类 :UICollectionViewFlowLayout 和 UICollectionViewTransitionLayout。

    这里贴一下常用的流水布局的代码:

    

//1.创建layout
// 1.1创建流水布局
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
// 1.2设置每个格子的尺寸
layout.itemSize = CGSizeMake(thumbnailWidth, thumbnailWidth);
// 1.3设置整个collectionView的内边距
CGFloat paddingY = 20;
layout.minimumInteritemSpacing = minimumItemspace;
layout.sectionInset = UIEdgeInsetsMake(0, minimumLinespace, paddingY, minimumLinespace);
// 1.4设置每一行之间的间距
layout.minimumLineSpacing = minimumLinespace;


2.重用

      两个里面的cell都可以进行重用,但是UICollectionViewCell在初始化时不会传入identifier ,这会导致cell没有identifier可以用于在缓存池中寻找,所以我们需要在ViewDidload方法中注册一个cell,这时它会传入一个identifier,当缓存池中找不到cell时,系统会用注册的cell自动创建一个供使用。如果要注册自己写得类,而该类的视图是从xib文件中生成的,必须注册nib文件。方法如下:

[self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:reuseIdentifier];
<pre name="code" class="objc">     UINib *nib = [UINib nibWithNibName:@"CYLProductItem" bundle:nil];
[self.collectionView registerNib:nib forCellWithReuseIdentifier:reuseIdentifier];



3.index

       在UITableViewController中,index取出相应组合组中行的两个属性是section和row,而在UICollectionViewController中,index对应的是section和item.

       
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  CollectionView