这里总结一下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;
}
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;
}
相关文章推荐
- 一般处理程序的救星!利用反射一招叫你摆脱丑比代码
- java第五次作业
- 解决Eclipse项目有红感叹号的方法以及clean完没有自动生成R文件的方法
- C++ 中关于默认构造函数的一点困惑
- IntelliJ IDEA:Getting Started with Spring MVC, Hibernate and JSON实践
- JAVA反射机制(及反射调用的性能简测)
- VS 创建 使用C++ 静态类库(Dll)
- Java基础学习(三)—面向对象(上)
- effective c++读书笔记(一)
- java 三种调用机制(同步、回调、异步)
- Python 练习实例17
- (转)Eclipse快捷键大全,导包快捷键:ctrl+Shift+/
- php面向对象之类成员
- Python 练习实例18
- <java API源码初体验>3---collection集合之HashMap原理分析
- python10min系列之面试题解析:python实现tail -f功能
- Java设计模式--------建造者模式之进阶
- Python 练习实例20
- 20145210 《Java程序设计》第07周学习总结
- C++实践参考:数组作数据成员