您的位置:首页 > 编程语言

这里总结一下collection cell的三种创建方式的相关步骤,原形cell,xib,代码;还有对collection view的数据流flowlayout属性与collectionview的头底

2016-04-15 22:45 477 查看
这里总结一下collection cell的三种创建方式的相关步骤,原形cell,xib,代码;还有对collection
view的数据流flowlayout属性与collectionview的头底部view的生成的总结。(读者可根据需要到相关位置查看)

一、原形cell

1、在storyboard的collection view中拖拉一个系统cell,
设定重用标志。

2、绑定一个继承了UICollectionViewCell的自定义类,拉线,定义模型数据属性之类的。

3、controller中懒加载数据。

4、使用数据源方法创建组,行,cell。

5、在创建cell的datasource的方法中

//注意这里因为是原形cell,所以不需要判断下面这行创建的cell是不是为空,每次创建先去缓存池找有没有标志的cell,如果没有就去找原形cell

自定义类名 *cell = [collectionView dequeReuseIdentifier:@"app" forIndexPath:indexPath];

cell.module属性 = ...

return cell;

二、xib构建collection cell(尤其要注意这里要注册cell)

1、创建一个collection cell xib,添加自定义控件,添加约束。

2、绑定一个继承了UICollectionView cell的自定义类,拉线,定义模型数据属性。

3、controller中懒加载模型数据。

4、注册cell,说明从指定的xib文件中创建

创建Nib对象
参数:(1)需要加载的xib文件名

(2)bundle目录,如果是nil,则默认是mainBundle

viewDidLoad中,UINib *nib = [UINib nibWithNibName:@"nib名字"
bundle:nil];

[self.collectionView registerNib:nib forCellWithReuseIdentifier:@"app"];

绑定类 *cell = [[nib instanceWithOwner:nil options:nil] lastObject];

可以创建一个临时cell来设置数据流(后面会说)

5、创建组,行,cell,其中cell的创建方法中:

绑定类 *cell = [collectionView dequeReuseableCellWithReuseIdentifier:@"app" forIndexPath:indexPath];

cell.module属性 = ...

return cell;

三、代码构建collectionView cell

1、自定义一个cell类,继承了UICollectionCell

.h中,有数据模型及各种面向外面的属性

.m中,有类的扩展,里面定义了各种空间的属性

1)控件初始化方法

-(instancetype) initWithFrame:(CGRect)frame{

self = [super initWithFrame:frame];

/*

这里创建各种类的扩展里面的子控件,设置子控件的各种图片,字,字体,格式等。

之后记住要添加[self.contentView addSubView:各种子view];

*/

return self;

}

2)给.h中的模型属性添加setter方法

3)layoutSubViews方法(每次collectionView发生变化都会调用一次这个方法,这个方法主要是对子控件做布局用的)

-(void)layoutSubViews{

[super layoutSubViews];

/*

这里对各个控件的frame进行配置

*/

}

2、viewDidLoad中,创建collectionView对象与UICollectionFlowlayout对象

UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];

UICollectionView *collectionView = [[UICollectionView alloc] initWithFrame:
self.view.bounds collectionViewLayout:layout];

/*

设置collectionView
和 flowlayout的各种属性(背景什么的,flowlayout的后面说)

*/

[self.view addSubView:collectionView];

同时记住要注册cell,

[self.collectionView registerNib:nib forCellWithReuseIdentifier:@"app"];

3、实现datasource的方法和上面xib的第5步一致

四、flowlayout,是collectionView特有的属性,是描述cell在collectionview中布局的重要属性,可以脱线绑定collectionview的绑定类中:

1、设置itemSize(用于设置cell的属性)

self.flowlayout.itemSize = CGSizeMake(,);

2、设置组的内间距

self.flowlayout.sectionInset = UIEdgeInsetsMake(,,,);

3、设置行间距,与collectionview的滚动方向一致

self.flowlayout.minimumLineSpacing = ...;

4、设置列间距

selfself.flowlayout.minimumLineInteritemSpacing = ...;

5、设置滚动方向,默认是竖直方向上的

self.flowlayout.scrollDirection = UICollectionViewScrollDirection...;

6、设置头底部view的匡高,若竖直则宽无效,若水平,则高无效

self.flowlayout.header/footerReferenceSize = CGSizeMake(,);

7、让组的头部或底部固定在屏幕的四个可视的边界:

self.flowlayout.sectionHeaders/FootersPinToVisibleBounds =
BOOL;

五、collectionview会自动创建它的头底部view,当出现在可视化界面的时候,想到如自己创建的头底部view的时候

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

NSString *kindType = @"header";

if (kindType == UICollectionElementKindSectionFooter){

kindType = @"footer";

}

UICollectionViewReusableView *view = [collectionView dequeReuseableSupplymentaryViewOfKind:kind WithReuseIdentifier:kindType forIndexPath:indexPath];

return view;

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