在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. php的一些小笔记--数学函数

    通常我们使用的数学函数不多,经常出现的有 floor 地板->舍去 ceil   天花板->进一 round 四舍五入 rand 随机数 mt_rand 产生更好的随机数 pow 指数表达 ...

  2. 浅谈window.attachEvent

    以前写 JavaScript 脚本时,事件都是采用object.event = handler;的方式初始化.这种方式对于 Internet Explorer.Mozilla/Firefox 和 Op ...

  3. Pubwin服务端重装(安装)教程

    此博文已移至爬不稳独立博客:www.pubwin2009.net传送门:http://www.pubwin2009.net/index.php/post/6.html 一,卸载原来服务端和数据库. 1 ...

  4. 基于方法的LINQ语句

    LINQ中的查询方法有两站,一种是使用类似于SQL语句的方式,另一种则是基于方法的语句.基于方法的查询方法使用的是C#中面向对象概念的,主要的方法有: 投影:  Select | SelectMany ...

  5. sql中插入多条记录-微软批处理

    这是使用批处理的一个例子: System.IO.StreamWriter messagelog = null; string messageString = ""; SqlConn ...

  6. 关于文字颜色/图片背景---selector状态列表

    文字颜色 android:textColor="@style/style_name" ----------------------------------widget 图片背景 a ...

  7. USB-CSW之旅

    前面总结了usb mass storage的枚举过程,如果所有枚举正常,那么会进入bulkonly协议定义的数据交流,在这个数据包里面还包含了SCSI的协议. Bulkonly协议usbmassbul ...

  8. 为什么选择使用 Dropbox 而不是其他品牌同步工具(不要加上多余的功能,要极致和专注)

    作者:吴锋链接:http://www.zhihu.com/question/19646859/answer/14707821来源:知乎著作权归作者所有,转载请联系作者获得授权. 窃以为楼主的问题,准确 ...

  9. C语言随笔_printf输出多行

    想在printf中,输出多行数据,如果写成下面这样: printf("line 1\n line 2\n line 3\n");编译器会报错“error C2001: newlin ...

  10. c语言中内存对齐问题

    在最近的项目中,我们涉及到了“内存对齐”技术.对于大部分程序员来说,“内存对齐”对他们来说都应该是“透明的”.“内存对齐”应该是编译器的“管辖范围”.编译器为程序中的每个“数据单元”安排在适当的位置上 ...