文档章节

UICollectionView简单使用

大魔王周晓辉
 大魔王周晓辉
发布于 2016/04/27 16:09
字数 493
阅读 7
收藏 0

@interface XCZCollectionHeader : UICollectionReusableView



#import "XCZCollectionsViewController.h"

#import "XCZCollectionViewCell.h"

#import "XCZCollectionHeader.h"


@interface XCZCollectionsViewController ()<UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDelegateFlowLayout>


@end


@implementation XCZCollectionsViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view.

    self.title = @"分类";

     [self createCollectionView];

}


- (void)createCollectionView {

 // 第一步:新建布局对象

    UICollectionViewFlowLayout * layout = [[UICollectionViewFlowLayout alloc]init];

    CGFloat padding = 10;

    CGFloat itemW = (self.view.frame.size.width - 5 * padding)/4;

    CGFloat itemH = itemW;

    layout.itemSize = CGSizeMake(itemW, itemH);

    

    // 头尾高度

    layout.headerReferenceSize = CGSizeMake(0, 10);

    // 最小间隔

    // 对于垂直滚动,它是行间距

    // 对于水平滚动,它是列间距


    layout.minimumLineSpacing = 10;

    // 内边距

    layout.sectionInset = UIEdgeInsetsMake(10, 10, 10, 10);


    

    // 集合视图,用于块状分布

    // iOS6.0之后出现的视图

    // 第二步,新建集合视图,关联布局对象

    [self setAutomaticallyAdjustsScrollViewInsets:NO];

    

    UICollectionView *collectionView = [[UICollectionView alloc]initWithFrame:CGRectMake(0, 64, self.view.frame.size.width, [[UIScreen mainScreen] bounds].size.height - 64) collectionViewLayout:layout];

    

    // 第三步,注册cell, 注册追加视图(section的头和尾)

    // 注册cell

    [collectionView registerClass:[XCZCollectionViewCell class] forCellWithReuseIdentifier:@"MyCellID"]; // 复用标识,可随意写

    

    // 注册supplementary view

    // 第一个参数:注册的类

    // 第二个参数:追加视图的类型 UICollectionElementKindSectionHeader  表示头,UICollectionElementKindSectionFooter表示尾 相当于tableView 中分区的headerViewfooterView

    // 第二个参数:复用标识

    [collectionView registerClass:[XCZCollectionHeader class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"MySectionHeaderViewID"]; // 注册头

    

    // 第四步,设置代理,并实现代理方法

    collectionView.delegate = self;

    collectionView.dataSource = self;

    collectionView.backgroundColor = [UIColor whiteColor];

    [self.view addSubview:collectionView];


}


#pragma mark - 实现代理方法

// 多少个分区

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {

    return 4;

}


// 每个分区有多少cell(item)

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

    if (section == 0) {

        return 7;

    }else if (section == 1){

    

        return 11;

    }else if (section == 2){

    

        return 12;

    

    }else if (section == 3){

    

        return 7;

    }

    return section;

}


- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


// 每个cell是什么

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

    XCZCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"MyCellID" forIndexPath:indexPath];

    cell.imageView.image = [UIImage imageNamed:@"1"];

    cell.textLabel.text = @"嘎嘎";

    return cell;

}


// 头尾视图

- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath {

    // 根据是头视图还是尾视图作判断

    XCZCollectionHeader *headerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"MySectionHeaderViewID" forIndexPath:indexPath];

    headerView.backgroundColor = [UIColor grayColor];

 

   NSArray * arr = @[@"选集",@"主题",@"写景",@"节日"];

//    NSString *title = [[NSString alloc] initWithFormat:@"Recipe Group #%li",indexPath.section +1];


    headerView.textLabel.text = arr[indexPath.section];


    

    

    

    return headerView;

}


- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{


    NSLog(@"--%ld",(long)indexPath.row);



}

// 通过代理方法设置headerView的大小

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

    return CGSizeMake(0, 26);

}



© 著作权归作者所有

共有 人打赏支持
上一篇: 跳转APPStore
下一篇: iOS CAShapeLayer精讲
大魔王周晓辉
粉丝 0
博文 38
码字总数 12328
作品 0
朝阳
私信 提问
iOS UICollectionView 深度总结

最近一直有朋友问我UICollectionView的用法,感觉还是有很多朋友对UICollectionView不太熟悉,今天抽点空,总结一下UICollectionView的用法,如有错误,欢迎大家提出来。 题纲: 1.最简单的U...

远0
2017/01/05
0
0
iOS流布局UICollectionView系列一——初识与简单使用UICollectionView

iOS流布局UICollectionView系列一——初识与简单使用UICollectionView 一、简介 UICollectionView是iOS6之后引入的一个新的UI控件,它和UITableView有着诸多的相似之处,其中许多代理方法都十...

珲少
2015/10/27
0
5
UICollectionView 01 - 基础布局篇

目录 项目下载地址: CollectionView-Note UICollectionView 01 - 基础布局篇 UICollectionView 02 - 布局和代理篇 UICollectionView 03 - 自定义布局原理篇 UICollectionView 04 - 卡片布局...

smalldu
2018/11/21
0
0
UICollectionView 02 - 布局和代理篇

文章按照顺序写的,之前文章写过的很多逻辑都会略过,建议顺序阅读,并下载源码结合阅读。 目录 UICollectionView 01 - 基础布局篇 UICollectionView 02 - 布局和代理篇 UICollectionView 0...

smalldu
2018/11/21
0
0
iOS流布局UICollectionView系列二——UICollectionView的代理方法

iOS流布局UICollectionView系列二——UICollectionView的代理方法 一、引言 在上一篇博客中,介绍了最基本的UICollectionView的使用和其中我们常用的属性和方法,也介绍了瀑布流布局的过程与...

珲少
2015/10/27
0
3

没有更多内容

加载失败,请刷新页面

加载更多

基于 DataLakeAnalytics 的数据湖实践

随着软硬件各方面条件的成熟,数据湖(Data Lake)已经越来越受到各大企业的青睐, 与传统的数仓实践不一样的是,数据湖不需要专门的“入仓”的过程,数据在哪里,我们就从哪里读取数据进行分析...

迷你芊宝宝
28分钟前
1
0
ubuntu查看防火墙状态

1.查看防火墙当前状态 sudo ufw status 2.开启防火墙 sudo ufw enable 3.关闭防火墙 sudo ufw disable 4.查看防火墙版本 sudo ufw version 5.默认允许外部访问本机 sudo ufw default all...

Frost729
29分钟前
1
0
Gradle插件使用过程记录

Android中基于Gradle进行编译打包的过程,下面记录一下如何进行Gradle插件开发的过程: 首先在项目中新建的一个名为buildSrc的module,为什么叫这个名字请看官方文档。然后将Java文件夹以及r...

JerryLin123
36分钟前
1
0
RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占优势

美国时间3月4-8日,国际知名信息安全峰会RSA Conference在美国旧金山开幕,云安全及云可以为企业提供更可靠的资产管理方式成为大会热点。 此次峰会共吸引全球700多家机构参展,其中近42%为云...

阿里云云栖社区
37分钟前
2
0
重磅推出TabLayout高级窗口组件

TabLayout是在APICloud现有窗口系统基础上升级而来的高级窗口组件,符合Material Design规范,可通过简单的配置为窗口实现原生的导航栏和TabBar,它将帮助您节省30%以上的重复编码工作量,同...

API_Cloud
41分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部