UICollectionView的使用小记录和一些说明
- //
- // MallTestViewController.h
- // fitmiss
- //
- // Created by bill on 16/6/28.
- // Copyright © 2016年 lear. All rights reserved.
- //
- #import "RootViewController.h"
- @interface MallTestViewController : RootViewController
- @end
- //
- // MallTestViewController.m
- // fitmiss
- //
- // Created by bill on 16/6/28.
- // Copyright © 2016年 lear. All rights reserved.
- //
- #import "MallTestViewController.h"
- // 注意const的位置
- static NSString *const cellId = @"cellId";
- static NSString *const headerId = @"headerId";
- static NSString *const footerId = @"footerId";
- @interface MallTestViewController ()<UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDelegateFlowLayout>
- @end
- @implementation MallTestViewController
- - (void)viewDidLoad {
- [super viewDidLoad];
- UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
- UICollectionView *colView = [[UICollectionView alloc] initWithFrame:CGRectMake(, , [Function getScreenWidth], [Function getScreenHeight:self]) collectionViewLayout:layout];
- colView.backgroundColor = [UIColor grayColor];
- colView.dataSource = self;
- colView.delegate = self;
- [self.view addSubview:colView];
- // 注册cell、sectionHeader、sectionFooter
- [colView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:cellId];
- [colView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:headerId];
- [colView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:footerId];
- }
- - (NSArray *)loadData
- {
- NSArray *arr = [NSArray arrayWithObjects:@"cell", @"cell2", @"cell3", @"cell4", @"cell5", @"cell6", @"cell7", @"cell8", @"cell9",nil];
- return arr;
- }
- #pragma mark - UICollectionViewDataSource
- // 定义展示的Section的个数
- -(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
- {
- return ;
- }
- // 定义每个 UICollectionView 中展示的 UICollectionViewCell 的个数
- -(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
- {
- return [[self loadData] count];
- }
- // 每个 UICollectionView 展示的内容
- - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
- {
- UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellId forIndexPath:indexPath];
- cell.backgroundColor = [UIColor redColor];
- return cell;
- }
- // 设置 UICollectionView 的段头段尾内容,和UITableView类似
- - (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
- {
- if([kind isEqualToString:UICollectionElementKindSectionHeader])
- {
- UICollectionReusableView *headerView = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:headerId forIndexPath:indexPath];
- if(headerView == nil)
- {
- headerView = [[UICollectionReusableView alloc] init];
- }
- headerView.backgroundColor = [UIColor whiteColor];
- return headerView;
- }
- else if([kind isEqualToString:UICollectionElementKindSectionFooter])
- {
- UICollectionReusableView *footerView = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:footerId forIndexPath:indexPath];
- if(footerView == nil)
- {
- footerView = [[UICollectionReusableView alloc] init];
- }
- footerView.backgroundColor = [UIColor lightGrayColor];
- return footerView;
- }
- return nil;
- }
- // 是否可移动
- - (BOOL)collectionView:(UICollectionView *)collectionView canMoveItemAtIndexPath:(NSIndexPath *)indexPath
- {
- return YES;
- }
- // 处理移动
- - (void)collectionView:(UICollectionView *)collectionView moveItemAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath*)destinationIndexPath
- {
- }
- #pragma mark - UICollectionViewDelegateFlowLayout
- // 定义 UICollectionView 中 cell 的尺寸
- - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
- {
- if (indexPath.section == ) {
- return CGSizeMake(, );
- }
- return CGSizeMake(, );
- }
- // 定义 UICollectionView 的 margin
- -(UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
- {
- return UIEdgeInsetsMake(, , , );
- }
- // 定义 UICollectionView 中上下两个 cell 的最小间距
- - (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section
- {
- return .f;
- }
- // 定义 UICollectionView 中左右两个 cell 的最小间距
- - (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section
- {
- return .f;
- }
- // 定义 UICollectionView 头部的尺寸
- - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section{
- if (section==) {
- return CGSizeMake(, );
- }
- return CGSizeMake(, );
- }
- // 定义 UICollectionView 尾部的尺寸
- - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section
- {
- return CGSizeMake(, );
- }
- #pragma mark - UICollectionViewDelegate
- // UICollectionView被选中时调用的方法
- -(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
- {
- NSLog(@"您点击了item:%@", [[self loadData] objectAtIndex:indexPath.row]);
- UICollectionViewCell *cell = (UICollectionViewCell *)[collectionView cellForItemAtIndexPath:indexPath];
- //cell.backgroundColor = [UIColor whiteColor];
- }
- // 返回这个UICollectionView是否可以被选择
- -(BOOL)collectionView:(UICollectionView *)collectionView shouldSelectItemAtIndexPath:(NSIndexPath *)indexPath
- {
- return YES;
- // if (indexPath.row % 2)
- // {
- // return YES;
- // }
- // return NO;
- }
- // 开启突出某个内容
- - (BOOL)collectionView:(UICollectionView *)collectionView shouldHighlightItemAtIndexPath:(NSIndexPath *)indexPath
- {
- return YES;
- }
- // 按下时处理内容 如:变色
- - (void)collectionView:(UICollectionView *)collectionView didHighlightItemAtIndexPath:(NSIndexPath *)indexPath
- {
- UICollectionViewCell *cell = [collectionView cellForItemAtIndexPath:indexPath];
- cell.backgroundColor = [UIColor blueColor];
- }
- // 松开时处理内容 如:变色
- - (void)collectionView:(UICollectionView *)collectionView didUnhighlightItemAtIndexPath:(NSIndexPath *)indexPath
- {
- UICollectionViewCell *cell = [collectionView cellForItemAtIndexPath:indexPath];
- cell.backgroundColor = [UIColor greenColor];
- }
- // 长按某item,弹出copy和paste的菜单
- - (BOOL)collectionView:(UICollectionView *)collectionView shouldShowMenuForItemAtIndexPath:(NSIndexPath *)indexPath
- {
- return YES;
- }
- // 使copy和paste有效
- - (BOOL)collectionView:(UICollectionView *)collectionView canPerformAction:(SEL)action forItemAtIndexPath:(NSIndexPath *)indexPath withSender:(nullable id)sender
- {
- if ([NSStringFromSelector(action) isEqualToString:@"copy:"] || [NSStringFromSelector(action) isEqualToString:@"paste:"])
- {
- return YES;
- }
- return NO;
- }
- //处理copy和paste
- - (void)collectionView:(UICollectionView *)collectionView performAction:(SEL)action forItemAtIndexPath:(NSIndexPath *)indexPath withSender:(nullable id)sender
- {
- // if([NSStringFromSelector(action) isEqualToString:@"copy:"])
- // {
- // // NSLog(@"-------------执行拷贝-------------");
- // [collectionView performBatchUpdates:^{
- // [_section0Array removeObjectAtIndex:indexPath.row];
- // [collectionView deleteItemsAtIndexPaths:@[indexPath]];
- // } completion:nil];
- // }
- // else if([NSStringFromSelector(action) isEqualToString:@"paste:"])
- // {
- // NSLog(@"-------------执行粘贴-------------");
- // }
- }
- @end
UICollectionView的使用小记录和一些说明的更多相关文章
- Java 打印金字塔 or 打印带数字的金字塔 (Java 学习中的小记录)
Java 打印金字塔 or 打印带数字的金字塔 (Java 学习中的小记录) 作者:王可利(Star·星星) 效果图: 代码如下: class Star8 { public static void m ...
- Java 需要记得、了解的关键词 (Java 学习中的小记录)
Java 需要记得.了解的关键词 (Java 学习中的小记录) 作者:王可利(Star·星星) 总结:本次随笔,仅且拿来平时翻阅记忆用
- 关于HTML中,绝对定位,相对定位的理解...(学习HTML过程中的小记录)
关于HTML中,绝对定位,相对定位的理解...(学习HTML过程中的小记录) 作者:王可利(Star·星星) HTML中 相对定位:position:relative; 绝对定位:position ...
- 利用JQ实现的,高仿 彩虹岛官网导航栏(学习HTML过程中的小记录)
利用JQ实现的,高仿 彩虹岛官网导航栏(学习HTML过程中的小记录) 作者:王可利(Star·星星) 总结: 今天学习的jQ类库的使用,代码重复的比较多需要完善.严格区分大小写,在 $(" ...
- html/css 盒子布局 Margin 、Padding 、border 以及 清除浮动的知识 (学习HTML过程中的小记录)
html/css 盒子布局 Margin .Padding .border 以及 清除浮动的知识 (学习HTML过程中的小记录) 作者:王可利(Star·星星) width 是"宽 ...
- NDK开发小记录 C++读取java层对象内容
这是自己NDK开发得小记录,关于C++层读取java层传来的对象内容. 很简单的一个例子, 1.首先在java层定义了一个类NumList: public class NumList { public ...
- centos 6.X minimal 系列最小化安装完成后,安装mono和jexus过程小记录
在使用虚拟机安装minimal版centos运行mono+jexus的时候,遇到了一些坑,记录一下,比如虚拟机访问不了网络,没wget命令没开放80端口,等等小问题,其他网上教程已经有mono+jex ...
- Backbone小记录
前言 这两天看了下Backbone.js的知识,大概了解了这个框架的一些知识. 写篇博客总结一下. Backbone.js是一个web端javascript的轻量级MVC框架.为什么说是轻量级呢?因为 ...
- HorizontalScrollView做页卡的一个小记录
用HorizontalScrollView做页卡,实现一个如下图的效果:
随机推荐
- css 修改滚动条
::-webkit-scrollbar { width: 10px;}::-webkit-scrollbar-track { -webkit-box-shadow: inset 0 0 6px rgb ...
- BZOJ 3176 Sort
先一遍reverse+逆序对个数. 要开long long啊. #include<iostream> #include<cstdio> #include<cstring& ...
- schematool -dbType mysql -initSchema hive startup failed...try this
schematool -dbType mysql -initSchema hive startup failed
- UE4 Android打包 问题 记录笔记
问题一:error: expression result unused [-Werror,-Wunused-value] 虽然看了输出日志知道了这行沉余代码删掉就行,但是不是很懂这个地方报错意义. 问 ...
- MVC SSO登陆 的麻烦事~
前段时间用MVC + Redis 做session搞了个简单的单点登录Web站.真是日了狗的问题多. 今天正好睡不着,做个备忘笔记>_< 实现方法很简单,无非就是从重载个Controlle ...
- Mybatis3.x与Spring4.x整合(转)
http://www.cnblogs.com/xdp-gacl/p/4271627.html 一.搭建开发环境 1.1.使用Maven创建Web项目 执行如下命令: mvn archetype:cre ...
- Jmeter增加压力机方法
windows: 需要别人的机器也安装jmeter 在别人的机器上运行jmeter-server.bat 修改jmeter.properties文件,查找remote_hosts 原始:remote_ ...
- 移动销售端app的需求分析
随着网络时代的发展,人们对于网络的依赖越来越大,网上购物便成了一个很大的消费者市场.. 如何分析一个综合的移动销售端app的需求我认为首先要确定用户,从用户的角度一个一个功能过,评估每一个功能的需求, ...
- 常用的CSS Hack
一.什么是CSS Hack? 不同的浏览器对CSS的解析结果是不同的,因此会导致相同的CSS输出的页面效果不同,这就需要CSS Hack来解决浏览器局部的兼容性问题.而这个针对不同的浏览器写不同的CS ...
- C#中的Excel操作【1】——设置Excel单元格的内容,打开Excel文件的一种方式
前言 作为项目管理大队中的一员,在公司里面接触最多的就是Excel文件了,所以一开始就想从Excel入手,学习简单的二次开发,开始自己的编程之路! 程序界面 功能说明 打开文件按钮,可以由使用者指定要 ...