1.集合视图由四个部分组成:
1.1.单元格
1.2.节,也就是视图的一行
1.3.装饰视图,节头和脚
1.4.补充视图,即背景视图
2.集合视图的数据源协议和委托协议:
UICollectionViewDataSource:
协议方法:
2.1
collection view:numberOfItemsInSection:提供某个节中的列数目,返回的是NSInteger:
2.2 numberOfSectionsInCollectionView:
提供视图中节的个数,返回的是NSInteger
2.3collectionview: cellForItemAtIndexPath:
为某个单元格提供显示数据,返回的是UIcollectionviewCell
2.4collectionView:viewForSupplementaryElementOfKind:atIndexPath:
为补充视图提供数据
UICollectionViewdelegate:
协议方法:
选择单元格触发:
-(void)collectionView:didSelectItemAtIndexPath:
不选择单元格触发?
collectionView:diddeselectItemAtIndexPath:
3.集合视图对应的控制类是UIcollectionviewcontroller.
4.集合视图单元格:
在xib 中是有个collection View cell,类似于table View 的cell的设置,需要新建一个cell .类。继承于UICollectionCell。
至于接下来怎么做就和写平常的类的设计相同了。
只是这里有在xib的设置当中,collectionView是有cell size 等等设置, 而在collection view cell 当中也有相同的设置
见代码5.3
5.collectionflowlayout 布局问题:
先对collectionviewlayout不处理?
6.在返回单元格时使用的是这个方法
Cell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
在这里对cell的一些属性进行赋值,来看看有没有初始化。因为这里是IBoutlet所以就没有初始化。
那在cell里面有initwithframe:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
//这里一般是自定义单元格的样式,如果没有自定义,这段代码可有可无。可是在xib当中不是已经有frame了嘛。
//来看看代码是什么样子的。
_scrollView = [[UIScrollView alloc] initWithFrame:self.bounds];
[_scrollView setFrame:CGRectMake(0, 0, 320, 480)];
_scrollView.contentSize = CGSizeMake(320*3, 480);
[self addSubview:_scrollView];
//UIScrollView 也是UIView.可以把它看做是UIView,就好了。另外需要引出来的是,初始化UIView ,一种是拖控件,即nib文件。这时候是不需要执行,但是会调用initwithCoder方法,来重新定义我们在xib中已经设置的各项属性。
另外一种就是上面这个方法咯,编写代码咯。
}
return self;
}