热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:UICollectionView(I)

本文由编程笔记#小编为大家整理,主要介绍了UICollectionView(I)相关的知识,希望对你有一定的参考价值。UICollectionView
本文由编程笔记#小编为大家整理,主要介绍了UICollectionView(I)相关的知识,希望对你有一定的参考价值。



UICollectionView 与 UITableView的异同

 相同点:

 

不同点:

① 动过代理和数据源方法来实现UI和数据填充的;

② 对Cell的重利用,实现了循环利用优化;

 


不同点:

① UITableView是系统自定义的竖直布局,只能竖直滚动,UICollectionView可以自由选择竖直布局和水品布局,分别为竖直滚动和水平滚动;

② UITableViewController的self.view == self.tableview;,但UICollectionViewController的self.view != self.collectionView;

③ UICollectionView的cell只能通过注册来确定重用标识符;

 

 


属性

滚动方向属性scrollDirection:


1 //垂直滚动,表示Cell布局是从左往右,从上到下排列的布局
2 //水平滚动,表示Cell方块布局是从上往下,从左到右排列的布局
3 typedef NS_ENUM(NSInteger, UICollectionViewScrollDirection) {
4 UICollectionViewScrollDirectionVertical, /*垂直滚动*/
5 UICollectionViewScrollDirectionHorizontal /* 水平滚动 */
6 };
7
8
9 //和UITableView不同,UICollectionView只能在这里设置顶部视图和底部视图的大小
10
11 //设置为垂直滚动时,顶部和底部视图的宽度为UICollectionView的宽度,无法设置
12
13 //设置为水平滚动时,顶部和底部视图的高度为UICollectionView的高度,无法设置

 

 

 


常用方法

1 //向容器视图注册Cell视图,有2种方式,一种是类名注册,一种是Xib注册
2 - (void)registerClass:(Class)cellClass /* 视图类*/ forCellWithReuseIdentifier:(NSString *)identifier;/* 绑定标识 */
3
4 - (void)registerNib:(UINib *)nib /* Xib */ forCellWithReuseIdentifier:(NSString *)identifier;/* 绑定标识 */
5
6 //从缓存池中取出Cell视图对象,如果缓存池没有,自动调用alloc/initWithFrame创建
7 - (UICollectionViewCell *)dequeueReusableCellWithReuseIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath *)indexPath;
8
9 //kind参数设置
10 NSString *const UICollectionElementKindSectionHeader;/* 顶部视图用这个 */
11 NSString *const UICollectionElementKindSectionFooter;/* 底部视图用这个 */
12
13
14 //向容器视图注册顶部视图或者底部视图,有2种方式,一种是类名注册,一种是Xib注册
15 - (void)registerClass:(Class)viewClass
16 forSupplementaryViewOfKind:(NSString *)kind /* 参考上面 */ withReuseIdentifier:(NSString *)identifier;/* 绑定标识 */
17
18 - (void)registerNib:(UINib *)nib forSupplementaryViewOfKind:(NSString *)kind /* 参考上面 */ withReuseIdentifier:(NSString *)identifier;/* 绑定标识 */
19
20 /* 从缓存池中取出顶部视图对象或者底部视图对象,如果缓存池没有,自动调用alloc/initWithFrame创建 */
21 - (UICollectionReusableView *)dequeueReusableSupplementaryViewOfKind:(NSString *)kind withReuseIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath *)indexPath;

 

 

 


UICollectionViewDelegate的代理方法

1 // 选中Cell方块时调用
2 - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath;
3
4 //取消选中Cell方块时调用
5 - (void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath;

 

 


UICollectionViewDataSource数据源方法

1 @required
2 //设置容器视图各个组都有多少个Cell
3 - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section;
4
5 //设置Cell,类似于UITableViewCell的设置
6 - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath;
7
8
9 @optional
10 //容器视图有多少个组,默认返回1
11 - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView;
12
13 //设置顶部视图和底部视图,通过kind参数分辨是设置顶部还是底部
14 - (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath;

 

 


UICollectionViewDelegateFlowLayout的代理布局方法

1 // 设置每个方块的尺寸大小
2 - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath;
3
4 //设置方块视图和边界的上下左右间距
5 - (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section;

 

 看图示:

技术分享图片

 


推荐阅读
author-avatar
顺顺当当的小屋约_564
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有