UICollectionView 集合视图用法,自定义Cell

在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.

}

时间: 2024-10-25 19:19:28

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

UICollectionView集合视图的概念

如何创建UICollectionView 集合视图的布局UICollectionViewFlowLayout 自定义cell 布局协议UICollectionViewDelegateFlowLayout UICollectionView与UITableView的实现类似,都需要设置delegate和dataSource 在collectionView中,cell的布局比tableView要复杂,需要使用一个类来描述集合视图的布局---UICollectionViewLayout->UIColle

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

自定义cell,多类型cell混合使用,cell自适应高度 自定义cell就是创建一个UITableViewCell的子类 把cell上的空间创建都封装在子类中,简化viewController中的代码 cell中的空间如何显示Model中的信息 cell中声明一个Model类型的属性,viewController中获取到Model对象后赋值给cell的Model属性 cell中重写Model的setter方法,把Model对象中的内容重新赋值给各个控件 M和V不直接通信,C负责M和V之间进行通

第二十一讲.UICollectionView(集合视图)以及瀑布流效果, 通知中心(NSNotificationCenter).

一.集合视图(UICollectionView) 1.集合视图的概念 2.如何创建 3.集合视图的布局UICollectionViewFlowLayout 4.自定义cell和 布局协议UICollectionViewDelegateFlowLayout 使用时cell一般选择自定义,而在布局时候要使用代理. UICollectionView的基本使用示例代码分析: #import "ViewController.h" #import "CollectionReusableV

UICollectionView 集合视图

创建集合视图 UICollectionView * cView = [[UICollectionView alloc]initWithFrame:CGRectMake(0, 0, 320, 568  ) collectionViewLayout:flowLayout];    cView.dataSource = self;  设置 dataSource 代理    cView.delegate = self;      设置delegate 代理    [self.view addSubvie

UICollectionView 集合视图 的使用

直接上代码: // // RootViewController.m // // #import "RootViewController.h" #import "CollectionViewCell.h" @interface RootViewController ()<UICollectionViewDataSource, UICollectionViewDelegate> @property (nonatomic, retain) UICollecti

iOS UITableView表视图(3)自定义cell

1.自定义cell 2.多种cell 的混合使用 3.cell自适应高度 自定义cell就是创建一个UITableViewCell的子类. 把cell上的控件创建都封装在子类中,简化UIViewController中的代码 子视图控件添加到cell的contentView上 cell中的控件如何显示Model中的信息? cell中声明一个Model类型的属性,viewController中获取到Model对象后赋值给cell的Model属性,cell中重写Model的setter方法,把Mode

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

一.UICollectionView集合视图 其继承自UIScrollView. UICollectionView类是iOS6新引进的API,用于展示集合视图,布局更加灵活,可实现多列布局,用法类似于UITableView类. 1.需要遵循的协议: 1)UICollectionViewDataSource, 2)UICollectionViewDelegate, 3)UICollectionViewDelegateFlowLayout 2.创建collection: UICollectionVi

集合视图

集合视图是iOS 6推出的新视图,克服了表视图中一行只能显示一个单元的缺陷.下面来简单看看怎么使用集合视图,一共有5个步骤,如下: 1.自定义单元 2.配置视图控制器 3.内容单元 4.实现流式布局 5.分区标题视图 接下来,看看每一步的操作. 自定义视图 继承UICollectionViewCell,定义自己的属性 ContentCell.h ```objc import @interface ContentCell : UICollectionViewCell @property (stro

集合视图(UICollectionView)

集合视图的四个组成部分: 单元格:它是集合视图中的一个单元格. 节:它是集合视图中的一个行数据,由多个单元格构成 补充视图:它是节的头和脚 装饰视图:集合视图中的背景图. UICollectionView继承自UIScrollView.有两个协议:UICollectionViewDelegate委托协议和UICollectionViewDataSource数据源协议. UICollectionViewCell是单元格类,它的布局是有UICollectionViewLayout类定义的,它是一个抽