UItableView与UICollectionView
UITableView
1. UITableViewStyleGrouped 分区表格样式创建表格
.separatorStyle = UITableViewCellSeparatorStyleSingleLineEtched; // 雕刻,双线效果。 测试无效
2. UITableView的其他方法属性
// 表格是否进入编辑模式 ,用以显示添加,删除,移动标识
setEditing: // 添加,删除不能同时显示
.allowsSelectionDuringEditing // 在编辑模式下是否允许可点击选择
// 返回编辑模式下,每行左侧显示的是删除还是添加
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
// 在可处理删除/添加方法中判断每行是何种操作 在tableviewdatasource协议下
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
// 行被移动后处理方法 在tableviewdatasource协议下
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath
// 自ios8开始支持的:在每行左滑或者编辑模式下点左侧删除按钮,右侧滑出多个按钮
- (NSArray<UITableViewRowAction *> *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath
3. 折叠分区内容
在分区样式下设置多个分区,每个分区对应不同的数据源
4. UITableViewCell 定制
定制分为三种方式:纯代码,xib,storyboard
> 纯代码
-自定义类继承自UITableViewCell
-添加子视图控件属性,以使其可通过cell.方式可获取
-重写父类方法 - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier // 复用时单元格初始化调用此方法,在其内实现初始化子视图,将子视图添加到cell.contentView中
/*** 开始- UITableViewCell 自适应内容高度 ***/
对于纯文字的情况(若还有其他,如图片,高度累加即可)
- 计算文字在给定宽度下所占用的尺寸
# 设定或获取文字的属性
# 计算在给定文字属性,绘制模式下,文字的高度
[string boundingRectWithSize:CGSizeMake(300, 0) options:NSStringDrawingUsesLineFragmentOrigin attributes:dic context:nil]
- 在返回行高协议方法中,返回计算的高度,根据实际情况可累加固定值
- 在绑定单元格内容的协议方法中,获取计算的高度,并通过此设置子视图的尺寸
/*** 结束- UITableViewCell 自适应内容高度 ***/
> xib 定制cell
- 自定类继承自UITableViewCell 并选择创建xib文件的选项
- 拖曳视图控件到xib并创建外联属性与其关联
- 选择此cell, Xcode右侧属性窗口下Table View Cell下设置 Identifier, 用于单元格复用的标识
- 若使用方式二复用,则注册时,选择registerNib:forCellReuseIdentifier:
- 其余步骤与之前基本一致
> storyboard 定制cell
UICollectionView
1. UICollectionView
网格视图,除了提供与UITableView同样的功能显示一组顺序显示的数据,还支持多列的布局。
2. UICollectionView 使用
> 设置Controller要遵循的协议:
UICollectionViewDataSource // 数据源协议
UICollectionViewDelegate // 数据行为协议
UICollectionViewDelegateFlowLayout // 数据流式布局协议
> 创建流式布局
flowLayout = [[UICollectionViewFlowLayout alloc] init]
> 设置该布局下滑动方向
flowLayout.scrollDirection = UICollectionViewScrollDirectionVertical / Horizontal // 默认是Vertical 在Horizontal时,元素是依次竖向摆放,Vertical时,依次横向摆放
> 以布局方式和frame 初始化UICollectionView
[[UICollectionView alloc] initWithFrame: collectionViewLayout: ]
> 设置背景色,纯代码实现时,UICollectionView默认背景色是黑色
.barckgroundColor
> 设置代理
.dataSource // 代理 UICollectionViewDataSource
.delegate // 代理 UICollectionViewDelegate ,UICollectionViewDelegateFlowLayout
> 注册标识单元格UICollectionViewCell, UICollectionView Cell只能使用定制化的,并且必须注册。
[collectionView registerNib: forCellWithReuseIdentifier:]
[collectionView registerClass: forCellWithReuseIdentifier:]
> 注册标识分区表头/表尾 UICollectionReusableView,创建时要手动设置其class
[collectionView registerNib: forSupplementaryViewOfKind: withReuseIdentifier: ]
/* forSupplementaryViewOfKind: 表示是为表头还是表尾注册,参数只有两个可选值:UICollectionElementKindSectionHeader:表头,UICollectionElementKindSectionFooter: 表尾 */
> 协议方法
- UICollectionViewDataSource
必须实现:
// 每个分区条数(不是行数)
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section;
// 数据绑定cell
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath;
其他方法:
// 返回分区数量
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView;
// 数据绑定表头/表尾:必须为其设置尺寸才可显示,注意查看不同scrollDirection下表头的展现
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath;
- UICollectionViewDelegateFlowLayout
// 返回分区表头尺寸
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section;
// 返回分区表尾尺寸
- (CGSize)collectionView:(UICollectionView *)collectionView layout:
(UICollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section;
// 返回每条的尺寸
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath;
// 返回每个分区四周的外间距
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
// 返回每个分区内最小行间距
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section
// 返回每个分区内条目之间最小内部距离
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section
-UICollectionViewDelegate
// 条被选中:注意被选中的背景色,只能自定义selectedBackgroundView,且设置后,不能设置cell的背景色,否则无法看到点击选中效果
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath;
// 条被反选
- (void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath;
UItableView与UICollectionView的更多相关文章
- RumTime实践之--UITableView和UICollectionView缺省页的实现
有关RunTime的知识点已经看过很久了,但是一直苦于在项目中没有好的机会进行实际运用,俗话说"光说不练假把式",正好最近在项目中碰到一个UITableView和UICollect ...
- UITableView和UICollectionView的方法学习一
参考资料 UITableView UICollectionView UICollectionViewDataSource UICollectionViewDelegate UICollectionVi ...
- UItableView嵌套UICollectionView
首先我们需要继承一下UITableView并且遵守<UITableViewDelegate,UITableViewDataSource,UICollectionViewDataSource,UI ...
- UITableView和UICollectionView的Cell高度的几种设置方式
UITableViewCell 1.UITableView的Cell高度默认由rowHeight属性指定一个低优先级的隐式约束 2.XIB中可向UITableViewCell的contentView添 ...
- iOS 8自动调整UITableView和UICollectionView布局
本文转载自:http://tech.techweb.com.cn/thread-635784-1-1.html 本文讲述了UITableView.UICollectionView实现 self-siz ...
- iOS中UITableView和UICollectionView的默认空态页
项目中想实现空态页风格统一控制的效果,就封装了一个默认空态页,使用的技术点有:1 方法替换 ,2 给分类(Category)添加属性. 我们知道,扩展(extension)可以给类添加私有变量和方法. ...
- UITableVIew与UICollectionView带动画删除cell时崩溃的处理
UITableVIew与UICollectionView带动画删除cell时崩溃的处理 -会崩溃的原因是因为没有处理好数据源与cell之间的协调关系- 效果: tableView的源码: ModelC ...
- [转]iOS8 自动调整UITableView和UICollectionView布局
转自:http://www.cocoachina.com/industry/20140825/9450.html (via:玉令天下的Blog) 本文讲述了UITableView.UICollec ...
- 封装Button ,封装UITableView,封装UICollectionView
---恢复内容开始--- 封装Button ,封装UITableView,封装UICollectionView: 1.实现Button的创建和点击事件不用分开操作处理; 2.实现UITableView ...
- iOS全埋点解决方案-UITableView和UICollectionView点击事件
前言 在 $AppClick 事件采集中,还有两个比较特殊的控件: UITableView •UICollectionView 这两个控件的点击事件,一般指的是点击 UITableViewCell 和 ...
随机推荐
- react+redux教程(二)redux的单一状态树完全替代了react的状态机?
上篇react+redux教程,我们讲解了官方计数器的代码实现,react+redux教程(一).我们发现我们没有用到react组件本身的state,而是通过props来导入数据和操作的. 我们知道r ...
- 出操队形(LIS)
题目来源:微策略2013年校园招聘面试一面试题 题目描述: 在读高中的时候,每天早上学校都要组织全校的师生进行跑步来锻炼身体,每当出操令吹响时,大家就开始往楼下跑了,然后身高矮的排在队伍的前面,身高较 ...
- Git-TortoiseGit完整配置流程
每次使用Git的时候都或多或少遇到些问题,为了方便以后少踩一些坑,把自己踩过的坑记录一下,加深对Git使用的理解,所以写下这篇日记记录一下. 本文需要频繁使用cmd,如果使用系统的cmd会稍微有点不便 ...
- 基于python的七种经典排序算法
参考书目:<大话数据结构> 一.排序的基本概念和分类 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.排序算法,就是如何使得记录按照要求排列的方法. ...
- Debugging into .NET Core源代码的两种方式
一.前言 .NET开源时间还不长,因为一直在做YOYOFx的关系,所似我常常有更深入的了解.NET Core和ASP.NET Core内容的需求,并且.NET Core平台与之前版本的变化太大,这也导 ...
- 【UWP开发】一个简单的Toast实现
Toast简介 在安卓里Toast是内置原生支持,它是Android中用来显示显示信息的一种机制.它主要用于向用户显示提示消息,没有焦点,显示的时间有限,过一定的时间就会自动消失.在UWP中虽然没有原 ...
- 使用签名来保证ASP.NET MVC OR WEBAPI的接口安全
当我们开发一款App的时候,App需要跟后台服务进行通信获取或者提交数据.如果我们没有完善的安全机制则很容易被别用心的人伪造请求而篡改数据. 所以我们需要使用某种安全机制来保证请求的合法.现在最常用的 ...
- AssetsManagerEx 组件使用说明
原因 在网络上找了一圈也没有找到一个像样的说明.如果不是我们技术组的大大说这个东西可以用我都快放弃了. 稍微阅读了一下这个组件的源代码.发现该有的功能都有(如下所列). 其实最初吸引我们用这个东西的功 ...
- Sql Server 覆盖索引
覆盖索引通常都是复合索引,即索引字段为多个.创建索引时应该注意索引排列顺序. Sql Server检索应用索引时,字段识别顺序为 从左到右. 例如如下索引的使用上 Create NONCLUSTERE ...
- 浅谈Slick(1)- 基本功能描述
Slick (Scala language-integrated connection kit)是scala的一个FRM(Functional Relational Mapper),即函数式的关系数据 ...