在View里面

//1.创建UICollectionViewFlowLayout

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

//设置

//1.1设置大小

flowLayout.itemSize=CGSizeMake(90, 90);

//1.2设置左右间距(注意如果给定间距,无法满足屏幕的宽度,设置无效)

flowLayout.minimumInteritemSpacing=10;

//1.3设置上下间距

flowLayout.minimumLineSpacing=20;

//1.4设置活动方向

flowLayout.scrollDirection=UICollectionViewScrollDirectionVertical;

//1.5设置Header

flowLayout.headerReferenceSize=CGSizeMake(self.bounds.size.width,100);

//1.6设置Footer

flowLayout.footerReferenceSize=CGSizeMake(self.bounds.size.width, 100);

//1.7设置内边距

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

//2.创建集合视图

self.coll=[[UICollectionView alloc] initWithFrame:self.bounds collectionViewLayout:flowLayout];

//背景颜色默认黑色

self.coll.backgroundColor=[UIColor whiteColor];

//3.添加到页面

[self addSubview:self.coll];

***********************自定义CEll

//视图布局

-(void)addAllViews

{

//视图控件都要加载在contentView上

self.c_imageView=[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.contentView.bounds.size.width, self.contentView.bounds.size.height*0.8)];

self.c_imageView.backgroundColor=[UIColor redColor];

[self.contentView addSubview:self.c_imageView];

self.c_label=[[UILabel alloc] init];

self.c_label.frame=CGRectMake(CGRectGetMinX(self.c_imageView.frame), CGRectGetMaxY(self.c_imageView.frame),self.contentView.bounds.size.width, self.contentView.bounds.size.height*0.2);

self.c_label.backgroundColor=[UIColor cyanColor];

[self.contentView addSubview:self.c_label];

}

//

-(void)layoutSubviews

{

[super layoutSubviews];

self.c_imageView.frame=CGRectMake(0, 0, self.contentView.bounds.size.width, self.contentView.bounds.size.height*0.8);

self.c_label.frame=CGRectMake(CGRectGetMinX(self.c_imageView.frame), CGRectGetMaxY(self.c_imageView.frame),self.contentView.bounds.size.width, self.contentView.bounds.size.height*0.2);

}

**********************************

#import "RootViewController.h"

#import "RootView.h"

#import "Mycell.h"

//标识

#define kcollCell @"collCell"

#define kHeaderView @"headerView"

#define kFooterView @"footerView"

//4.遵循集合视图的代理,数据协议

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

//FlowLayout不需要设置代理

@property(nonatomic,strong)RootView *rv;

@end

@implementation RootViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{

self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

if (self) {

// Custom initialization

self.rv=[[RootView alloc] initWithFrame:[UIScreen mainScreen].bounds];

}

return self;

}

-(void)loadView

{

self.view=self.rv;

}

- (void)viewDidLoad

{

[super viewDidLoad];

//5.设置代理

self.rv.coll.dataSource=self;

self.rv.coll.delegate=self;

// Do any additional setup after loading the view.

//6.注册cell

[self.rv.coll registerClass:[Mycell class] forCellWithReuseIdentifier:kcollCell];

}

//每个分组多少个

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

{

return 102;

}

//返回cell

// The cell that is returned must be retrieved from a call to -dequeueReusableCellWithReuseIdentifier:forIndexPath:

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

{

//7.创建cell(改为自己的cell)

Mycell *cell=[collectionView dequeueReusableCellWithReuseIdentifier:kcollCell forIndexPath:indexPath];

cell.c_imageView.image=[UIImage imageNamed:@"1347722492473[1].jpg"];

cell.c_label.text=@"妞儿";

//注册header

[self.rv.coll registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:kHeaderView];

//注册footer

[self.rv.coll registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:kFooterView];

float red=arc4random()%256/255.0;

float green=arc4random()%256/255.0;

float blue=arc4random()%256/255.0;

cell.backgroundColor=[UIColor colorWithRed:red green:green blue:blue alpha:0.5];

return cell;

}

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

{

NSLog(@"section: %d,row:%d",indexPath.section,indexPath.row);

}

//设置header和footer

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

{

if (kind==UICollectionElementKindSectionHeader) {

UICollectionReusableView *header=[collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:kHeaderView forIndexPath:indexPath];

UILabel *label=[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 50)];

label.backgroundColor=[UIColor blueColor];

[header addSubview:label];

label.text=@"哈哈";

header.backgroundColor=[UIColor redColor];

return header;

}

else

{

UICollectionReusableView *footer=[collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:kFooterView forIndexPath:indexPath];

footer.backgroundColor=[UIColor redColor];

return footer;

}

}

//

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

{

if (indexPath.row%2) {

return CGSizeMake(90, 90);

}

else

{

return CGSizeMake(60, 60);

}

}

//内边距

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

{

if (section==0) {

return  UIEdgeInsetsMake(10, 10, 10, 10);

}

else

{

return UIEdgeInsetsMake(90, 90, 90, 90);

}

}

//上下间距

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

{

if(section==0)

{

return 10;

}

else

{

return 20;

}

}

//左右间距

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

{

return 10;

}

//

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

{

return CGSizeMake(200,100 );

}

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

{

return  CGSizeMake(200, 100);

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

UICollectionView 集合视图用法,自定义Cell的更多相关文章

  1. UICollectionView集合视图的概念

    如何创建UICollectionView 集合视图的布局UICollectionViewFlowLayout 自定义cell 布局协议UICollectionViewDelegateFlowLayou ...

  2. UICollectionView 集合视图 的使用

    直接上代码: // // RootViewController.m // // #import "RootViewController.h" #import "Colle ...

  3. UI学习笔记---第十一天UITableView表视图高级-自定义cell

    自定义cell,多类型cell混合使用,cell自适应高度 自定义cell就是创建一个UITableViewCell的子类 把cell上的空间创建都封装在子类中,简化viewController中的代 ...

  4. UICollectionView(集合视图)以及自定义集合视图

    一.UICollectionView集合视图           其继承自UIScrollView.         UICollectionView类是iOS6新引进的API,用于展示集合视图,布局 ...

  5. iOS:集合视图UICollectionView、集合视图控制器UICollectionViewController、集合视图单元格UICollectionViewCell(创建表格的另一种控件)

    两种创建表格方式的比较:表格视图.集合视图(二者十分类似) <1>相同点:   表格视图:UITableView(位于storyboard中,通过UIViewController控制器实现 ...

  6. swift:创建集合视图UICollectionView

    swift中创建集合视图和OC中差不多,主要是实现UICollectionViewDataSource数据源协议和UICollectionViewDelegateFlowLayout自定义布局协议,其 ...

  7. IOS开发中UITableView(表视图)的滚动优化及自定义Cell

    IOS开发中UITableView(表视图)的滚动优化及自定义Cell IOS 开发中UITableView是非常常用的一个控件,我们平时在手机上看到的联系人列表,微信好友列表等都是通过UITable ...

  8. List<T>集合的Sort自定义排序用法简单解析

    List<T>集合的Sort自定义排序用法简单解析: 如下:一系列无序数字,如果想要他们倒序排列,则使用如下代码: 那么如何理解这段代码呢? (x,y)表示相邻的两个对象,如果满足条件:x ...

  9. 集合视图UICollectionView 介绍及其示例程序

    UICollectionView是一种新的数据展示方式,简单来说可以把它理解成多列的UITableView.如果你用过iBooks的话,可 能你还对书架布局有一定印象,一个虚拟书架上放着你下载和购买的 ...

随机推荐

  1. Hdu1089

    #include <stdio.h> int main() { int a,b; while(scanf("%d %d",&a,&b)!=EOF){ p ...

  2. linux 添加自定义环境变量

    1. vi /etc/profile ,在文件末尾加上要定义的环境变量,语法如下: export 变量名=变量值

  3. NOI十连测 第三测 T1

    这么二逼的题考试的时候我想了好久,我真是太弱了... 首先,由于ans都乘上了i*(i-1)/2,实际上要求的就是每个数的所有可能出现次数*这个数的权值. 我们发现,每个数的本质是一样的,我们记一个s ...

  4. 数据类型MSVC和gcc/g++的不同

    前言: 在16位环境下,int/unsigned int 占16位,long/unsigned long占32位 在32位环境下,int占32位,unsigned int占16位,long/unsig ...

  5. bootstrap绿色大气后台模板下载[转]

    From:http://www.oschina.net/code/snippet_2364127_48176 1. [图片] 2. [文件] 素材火官网后台模板下载.rar ~ 4MB     下载( ...

  6. Valid Palindrome 解答

    Question Given a string, determine if it is a palindrome, considering only alphanumeric characters a ...

  7. PSPInstance Object | Web Python

    PSPInstance Object | Web Python The PSPInstance object is available to all PSP pages through the psp ...

  8. 重大新闻:借贷宝不用绑卡了,借贷宝APP推出肖像识别新功能!

    动动手指,20元人民币立即到手:http://www.cnblogs.com/mfryf/p/4754384.html 滴滴打车烧钱十几个亿,狂送打车券,很多人天天免费坐车! 去年年初百度钱包注册奖励 ...

  9. poj 2395 Out of Hay(最小生成树,水)

    Description The cows have run <= N <= ,) farms (numbered ..N); Bessie starts at Farm . She'll ...

  10. Stones(优先队列)

    Stones Time Limit: 5000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Subm ...