UICollectionView代码创建.以及和 TableVi
很久没更了,感觉学习的很基础的东西没什么好写的,网上也一大把,但是发现写博客的一大好处就是,你忘记了一个知识点可以翻开博客查找,还是得坚持.
UICollectionView代码创建
简介:
UICollectionView是UIScrollView的子类,显示一组 UICollectionCell 或其子类
UICollectionViewController有数据源,委托 (UICollectionViewDelegate),布局类
1.数据源:UICollectionViewController.返回几行几列等方法
2.委托:UICollectionViewDelegate,哪一列被点击打等方法.
3.布局类:为每个 Cell 布局,如果想按网格布局,则可以使用 UICollectionViewFlowLayout,如果想自定义布局,可以创建 UICollectionViewLayout 的自定义子类.
UICollectionViewCell的 contentView 默认是没有子试图的,所以需要自定义 创建UICollectionViewCell的子类,来添加你想用来显示的东西
创建步骤
网上很多教程都直接在 ViewDidLoad 中创建,但是好像并没什么用,具体细节还有待深究,我的做法是直接将 ViewController 的 view 设置为 CollectionView(创建 UICollectionViewController 文件,并且设置为原始 viewController 的类)
- 声明一个全局变量 UICollectionView *coll,在 loadView 创建
UICollectionView,和 UICollectionViewFlowOut - (void)loadView { UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; _coll = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, 500, 500) collectionViewLayout:layout]; self.view = _coll; _coll.backgroundColor = [UIColor whiteColor]; }
2.viewDidLoad 中注册 Cell ,以便重用,并且设置数据源和 DataSource代理为自己
- (void)viewDidLoad { [super viewDidLoad];
_coll.delegate = self;
_coll.dataSource = self;
// Register cell classes
[_coll registerClass:[CollectionViewCell class] forCellWithReuseIdentifier:reuseIdentifier];
// Do any additional setup after loading the view.
}
3.设置数据源
#pragma mark <UICollectionViewDataSource>
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
return 1;
}
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
return 4;
}
//注册 Cell
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
CollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentifier forIndexPath:indexPath];
cell.backgroundColor = [UIColor blueColor];
return cell;
}
4.布局可以实现在FlowOut 协议中的方法来设置 item 大小,外边距等,这个可以看下文档实现,到这里基本的代码构建就完成了
UICollectionView 和 UITableView 的不同之处
1.最大的不同在于,UITableView 只显示UITableViewCell 一列,而 UICollectionView 可以任意安排 UICollectionCell
2.UICollectionCell 的 contentView 没有子试图,需要自定义,UITableViewCell 可以用默认的
其他倒是都差不多
欢迎交流学习:ykkaixing@gmail.com