博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
collectionview 的相关设置
阅读量:6231 次
发布时间:2019-06-21

本文共 4968 字,大约阅读时间需要 16 分钟。

 

初始化部分:

UICollectionViewFlowLayout *flowLayout= [[UICollectionViewFlowLayout alloc]init];self.myCollectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(20, 20, 250, 350) collectionViewLayout:flowLayout];self.myCollectionView.backgroundColor = [UIColor grayColor];[self.myCollectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@“myCell"];self.myCollectionView.delegate = self;self.myCollectionView.dataSource = self;[self.view addSubview:self.myCollectionView];

 注册Cell

//4.注册Cell    [colectionView registerClass:[WSHomeAdvarCell class] forCellWithReuseIdentifier:@"advertCell"];//广告轮播的cell    [colectionView registerNib:[UINib nibWithNibName:@"WSCategoryCell" bundle:nil] forCellWithReuseIdentifier:@"categoryCell"];//分类的cell    [colectionView registerNib:[UINib nibWithNibName:@"WSNoticeCell" bundle:nil] forCellWithReuseIdentifier:@"noticeCell"];//公告cell        //5.页眉    [colectionView registerClass:[WSHeadNewResult class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"Test"];//最新揭晓    [colectionView registerNib:[UINib nibWithNibName:@"WSNewResultCell" bundle:nil] forCellWithReuseIdentifier:@"newResultCell"];//最新揭晓    [colectionView registerNib:[UINib nibWithNibName:@"WSCountDownCell" bundle:nil] forCellWithReuseIdentifier:@"countDownCell"];//倒计时    [colectionView registerNib:[UINib nibWithNibName:@"WSProductCell" bundle:nil] forCellWithReuseIdentifier:@"productCell"];//商品cell        //页脚    [colectionView registerNib:[UINib nibWithNibName:@"WSFooterAllProducct" bundle:nil] forSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"footerAllProduct"];    [colectionView registerClass:[WSSeparteView class] forSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"separteView"];

 

 

 

UICollectionViewLayout

UICollectionViewLayout决定了UICollectionView如何显示在界面上,Apple提供了一个最简单的默认layout对象:UICollectionViewFlowLayout。

Flow Layout是一个Cells的线性布局方案,并具有页面和页脚。其可定制的内容如下:

itemSize属性

设定全局的Cell尺寸,如果想要单独定义某个Cell的尺寸,可以使用下面方法:

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath

minimumLineSpacing属性

设定全局的行间距,如果想要设定指定区内Cell的最小行距,可以使用下面方法:

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section

minimumInteritemSpacing属性

设定全局的Cell间距,如果想要设定指定区内Cell的最小间距,可以使用下面方法:

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section;

scrollDirection属性

设定滚动方向,有UICollectionViewScrollDirectionVerticalUICollectionViewScrollDirectionHorizontal两个值。

headerReferenceSize属性与footerReferenceSize属性

设定页眉和页脚的全局尺寸,需要注意的是,根据滚动方向不同,header和footer的width和height中只有一个会起作用。如果要单独设置指定区内的页面和页脚尺寸,可以使用下面方法:

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section

sectionInset属性

设定全局的区内边距,如果想要设定指定区的内边距,可以使用下面方法:

- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section;


 

然后需要实现三种类型的委托:UICollectionViewDataSource, UICollectionViewDelagate和UICollectionViewDelegateFlowLayout

@interface ViewController : UIViewController 

因为UICollectionViewDelegateFlowLayout实际上是UICollectionViewDelegate的一个子协议,它继承了UICollectionViewDelegate,所以只需要在声明处写上UICollectionViewDelegateFlowLayout就行了。


 

UICollectionViewDataSource

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView

返回collection view里区(section)的个数,如果没有实现该方法,将默认返回1:

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{    return 2;}

 

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section

返回指定区(section)包含的数据源条目数(number of items),该方法必须实现:

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{    return 7;}

 

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath

返回某个indexPath对应的cell,该方法必须实现:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"myCell" forIndexPath:indexPath];    if(indexPath.section==0)    {        cell.backgroundColor = [UIColor redColor];    }    else if(indexPath.section==1)    {        cell.backgroundColor = [UIColor greenColor];    }    return cell;}

转载于:https://www.cnblogs.com/zhuchangsheng/p/5646186.html

你可能感兴趣的文章
储能在多能互补集成优化中的应用
查看>>
阿里云牵手新加坡EZ-Link卡 日均交易超800万笔
查看>>
天天算法 LeetCode-216-组合总和 III
查看>>
spring data mongodb配置+月库实现
查看>>
19-05-09
查看>>
GMQ Group交易所让交易更自由,让投资更具多元化
查看>>
[译]13 种有用的 JavaScript DOM 操作
查看>>
媒体查询结合rem布局适配手机屏幕
查看>>
查询单表中多个字段同时重复的数据
查看>>
Java中两个判断字符串是否为空的方法的执行效率比较的代码
查看>>
OC方式简单实现几种快速排序和冒泡排序
查看>>
Web技巧(07)
查看>>
[翻译]http2-for-a-faster-web——快速了解http2
查看>>
写给自己看的面试题整理
查看>>
强力推荐开发类chrome插件
查看>>
SSM框架Spring+SpringMVC+MyBatis——详细整合教程
查看>>
利用Elasticsearch构建流量分析平台(一)
查看>>
[设计冲刺Design Sprint 核对清单]五天步骤笔记之星期一:绘制地图
查看>>
记一次Java服务频繁Full GC的排查过程
查看>>
使用 Docker 部署 Spring Boot
查看>>