UICollectionView 基础全面解析
来源:互联网 发布:win10平板手势软件 编辑:程序博客网 时间:2024/05/16 11:39
在iOS开发中经常会用到UICollectionView,和UITableView同样即成UIScrollView 但是操作起来比UITableVIew要麻烦一些 ,有些地方需要注意,一下是UICollectionView基础详解。
//
// ViewController.m
// Collection
#import "ViewController.h"
#import "CollectionViewCell.h"
#import "CollectionViewCell1.h"
#import "CollectionReusableView.h"
@interface ViewController ()<UICollectionViewDelegate,UICollectionViewDataSource>
@property(nonatomic,strong)UICollectionView *collectionView;
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
//此处必须要有创见一个UICollectionViewFlowLayout的对象
UICollectionViewFlowLayout *layout=[[UICollectionViewFlowLayoutalloc]init];
//同一行相邻两个cell的最小间距
layout.minimumInteritemSpacing =5;
//最小两行之间的间距
layout.minimumLineSpacing =5;
_collectionView=[[UICollectionViewalloc]initWithFrame:CGRectMake(0,0, 375,667) collectionViewLayout:layout];
_collectionView.backgroundColor=[UIColorwhiteColor];
_collectionView.delegate=self;
_collectionView.dataSource=self;
//这个是横向滑动
//layout.scrollDirection=UICollectionViewScrollDirectionHorizontal;
[self.viewaddSubview:_collectionView];
/*
*这是重点必须注册cell
*/
//这种是xib建的cell需要这么注册
UINib *cellNib=[UINibnibWithNibName:@"CollectionViewCell"bundle:nil];
[_collectionViewregisterNib:cellNib forCellWithReuseIdentifier:@"CollectionViewCell"];
//这种是自定义cell不带xib的注册
// [_collectionView registerClass:[CollectionViewCell1 class] forCellWithReuseIdentifier:@"myheheIdentifier"];
//这种是原生cell的注册
// [_collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"cell"];
//这是头部与脚部的注册
UINib *cellNib1=[UINibnibWithNibName:@"CollectionReusableView"bundle:nil];
[_collectionViewregisterNib:cellNib1 forSupplementaryViewOfKind:UICollectionElementKindSectionHeaderwithReuseIdentifier:@"CollectionReusableView"];
[_collectionView registerNib:cellNib1 forSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"CollectionReusableView"];
}
//一共有多少个组
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{
return1;
}
//每一组有多少个cell
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
return10;
}
//每一个cell是什么
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
CollectionViewCell *cell=[collectionView dequeueReusableCellWithReuseIdentifier:@"CollectionViewCell" forIndexPath:indexPath];
cell.label.text=[NSString stringWithFormat:@"%ld",indexPath.section*100+indexPath.row];
cell.backgroundColor=[UIColor groupTableViewBackgroundColor];
return cell;
}
//头部和脚部的加载
-(UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath{
UICollectionReusableView *view=[collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:@"CollectionReusableView" forIndexPath:indexPath];
UILabel *label=[[UILabel alloc]initWithFrame:CGRectMake(110,20, 100,30)];
if ([kind isEqualToString:UICollectionElementKindSectionHeader]) {
label.text=@"头";
}else{
label.text=@"脚";
}
[view addSubview:label];
return view;
}
//每一个分组的上左下右间距
-(UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
{
return UIEdgeInsetsMake(5,5, 5,5);
}
//头部试图的大小
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section{
return CGSizeMake(50,60);
}
//脚部试图的大小
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section
{
return CGSizeMake(50,60);
}
//定义每一个cell的大小
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
return CGSizeMake(115,100);
}
//cell的点击事件
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
//cell被电击后移动的动画
[collectionView selectItemAtIndexPath:indexPath animated:YES scrollPosition:UICollectionViewScrollPositionTop];
}
@end
- UICollectionView 基础全面解析
- UICollectionView 基础全面解析
- Vagrant 基础全面解析
- memcached全面解析--memcached基础
- Java 基础注解全面解析
- UICollectionView基础
- UICollectionView基础
- UICollectionView基础
- UICollectionView基础
- UICollectionView基础
- UICollectionView基础
- UICollectionView基础
- UICollectionView基础
- UICollectionView基础
- UICollectionView基础
- UICollectionView基础
- UICollectionView基础
- UICollectionView基础
- C#获取本机局域网地址
- SqlServer创建新表
- 微机原理和接口技术思维导图Xmind
- 深入理解fragment(一)
- 刷新加载
- UICollectionView 基础全面解析
- C#通过获取CMD里ipconfig命令的结果来得到IP
- Intellij Idea 创建Web项目并部署servlet
- WordPress主题 MarketHub 数码市场/资源商城汉化主题[更新至v1.0.0]
- 【图解】一张图玩转H5测试
- Oracle与SqlServer数据字段名对应表
- 数据库常见笔试面试题
- C# WinForm捕获全局异常
- OpenCV_(5):core组件常用函数