UICollectionView

UICollectionView很强大,tableView可以实现的功能,collectionView都可以实现,tableView实现不了的,它也能实现,但它在使用上与tableView有两点区别 :

1.collectionView在使用的时候 必须要注册cell,

2.必须创建一个布局对象给collectionView。


// 注册cell有三种方式:

1.可以通过在storyboard中给cell设置重用标识,即自动完成注册(无需代码)


2.通过xib文件注册cell,并在注册cell,指定重用标识(可用控件collectionViewCell创建xib)

//获得UINib对象,加载xib

UINib *nib = [UINib nibWithNibName:@"RCAppCell" bundle:nil];

RCAppCell *cell = [[nib instantiateWithOwner:nil options:nil]firstObject];

//通过xib注册cell

[self.collectionView registerNib:nibforCellWithReuseIdentifier:@"cell"];

//代码创建的时候,为了拿到itemSize给它赋值,可以强转一下

UICollectionViewFlowLayout *layout = (UICollectionViewFlowLayout *)self.collectionView.collectionViewLayout;

// 如果cell是通过xib来创建的,cellitemSize最好用xib中的cell的大小来动态的去设置"代码更有扩展性"

layout.itemSize = cell.frame.size;


3.通过class来注册一个cell,同时也要指定重用标识

//创建一个布局对象,默认是没有格子(cell的大小和间距等属性的,是空的布局对象,在下面返回cell的时候,cell没有Frame,所以运行不会显示cell,要创建一个流布局对象

//创建流布局对象

UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayoutallocinit];

//给流布局对象的itemSize属性赋值

layout.itemSize = CGSizeMake(100120);

//创建collectionView的同时,必须同时设置一个布局对象collectionViewlayout

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

testView.backgroundColor = [UIColor whiteColor];

[self.view addSubview:testView];

// 注册cell"之前必须告诉collectView他将来所需要的cell该如何去创建"

// 通过一个类来注册的cell,通过纯代码来自定义cell进用类来注册

[testView registerClass:[RCAppCell class]forCellWithReuseIdentifier:@"cell"];


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章