iOS开发之窥探UICollectionViewController(四) --一款功能强大的自定义瀑布流
在上一篇博客中《iOS开发之窥探UICollectionViewController(三) --使用UICollectionView自定义瀑布流》,自定义瀑布流的列数,Cell的外边距,Cell的最大以及最小高度是在我们的布局文件中是写死的,换句话说也就是不可配置的。为了循序渐进,由浅入深呢,上篇博客暂且那么写。不过那样写太过死板,本来使用起来比较灵活的自定义布局,如果把其配置参数给写死了,就相当于在笼中的猛兽,再厉害不也白扯蛮。
在今天这篇博客中我们要接着上篇博客中的Demo,使其自定义布局的属性在使用它的UICollectionView中是可配置的。 当然在本篇要介绍的Demo中只提取了四个布局参数,无论添加一个Delegate,但思路都是一样的。我们把上一篇博客中写死的内容,通过布局代理来提供参数配置,这样就灵活多了。好了,咸淡扯的适中,进入我们今天的主题。
一.进化后的运行效果
下图算是Demo的2.0版本的运行效果,和之前的比较起来功能确实强大了不少。因为他是可配置化的,根据用户输入的参数来确定瀑布流的样式。当然Demo中是通过用户输入的参数来确定的,如果你在代码中使用该自定义瀑布流,需要根据你的实际情况可以配置瀑布流的参数,来打造属于你自己的瀑布流。网上虽然好多实现瀑布流的博客和代码,但是像今天这样可配置的瀑布流应该是不多的,至少我没见过,所以喽就写一个,开源一下,给大家分享交流一下。
二、自定义瀑布流使用方式
该自定义瀑布流布局的使用方式和系统自带的UICollectionViewDelegateFlowLayout用法一直,都是通过布局代理来定制布局参数,关于UICollectionViewDelegateFlowLayout的内容详见《iOS开发之窥探UICollectionViewController(二) --详解CollectionView各种回调》中有关UICollectionViewDelegateFlowLayout代理介绍的内容。
如果想使用该布局文件,你需要为我们的UICollectionView来指定该布局文件,在本篇博客中的Demo中是在Storyboard中进行自定义布局文件的指定的,你也可以通过代码的方式指定,再次不做过多的赘述。指定该自定义布局后,你需要做以下事情:
1.为布局指定代理方法
首先获取UICollectionView的布局collectionViewLayout,然后为其设置CustomeCollectionViewLayoutDelegate代理即可,代码如下:
1 _customeLayout = (CustomeCollectionViewLayout *) self.collectionViewLayout;
2
3 _customeLayout.layoutDelegate = self;
2.实现CustomeCollectionViewLayoutDelegate中的方法
需要在UICollectionView的使用控制器中实现自定义布局中的代理方法来设置布局属性,我们这儿定了四个必须实现的方法。 你可以通过这些方法去设定cell的列数,Cell的外边距,Cell的最小高度,Cell的最大高度,如下所示:
#pragma mark <CustomeCollectionViewLayoutDelegate>
- (NSInteger) numberOfColumnWithCollectionView: (UICollectionView *)collectionViewcollectionViewLayout:( CustomeCollectionViewLayout *)collectionViewLayout{return _cellColumn;
}- (CGFloat)marginOfCellWithCollectionView:(UICollectionView *)collectionView collectionViewLayout:(CustomeCollectionViewLayout *)collectionViewLayout{return _cellMargin;
}- (CGFloat)minHeightOfCellWithCollectionView:(UICollectionView *)collectionView collectionViewLayout:(CustomeCollectionViewLayout *)collectionViewLayout{return _cellMinHeight;
}- (CGFloat)maxHeightOfCellWithCollectionView:(UICollectionView *)collectionView collectionViewLayout:(CustomeCollectionViewLayout *)collectionViewLayout{return _cellMaxHeight;
}
3. 你就可以通过上述Delegate方法来修改自定义布局的属性了,你可以通过一个配置页面,进行参数配置。配置完后,进行CollectionView的刷新即可,这些在本博客中就不做赘述,详情请见博客下方gitHub分享地址。
至此,我们的自定义瀑布流就相对比较完善了,不过还有好大的改善控件。感兴趣的小伙伴可以在此基础上加上你自己的东西。
iOS开发之窥探UICollectionViewController(四) --一款功能强大的自定义瀑布流相关推荐
- iOS开发-类似微信录音上滑取消功能
iOS开发-类似微信录音上滑取消功能 前言 效果 代码 先自定义UIButton 使用 监听上下滑动代码 前言 在社交媒体中开发中遇到需要做类似微信录音上滑取消功能,例子,虽然不是很好看,但是细节满满 ...
- iOS开发入门——模拟器方向判断及基本功能
iOS开发入门--模拟器方向判断及基本功能 方向判断简单实用 手机模拟器吧,嗯...很多时候我们可能会遇到手机横屏之后图像没变的情况,嗯?怎么回事?这次我们就先来看看这种情况,做一个简单的判断. im ...
- 五款功能强大的国产软件,常常被误认为是外国人开发的
今日的栽种,明日的果实,今天继续分享五个被误以为是国外软件的国产软件. 1.视频编辑--CyberLink 这是一款功能强大,高效易用的视频编辑器,光看名字又以为是国外软件,其实它是纯国产软件,中文名 ...
- 一款功能强大,可扩展端到端加密反向Shell的工具
关于Mediator Mediator是一款功能强大的可扩展端到端加密反向Shell,该工具基于新型架构实现,采用Python语言开发,能够帮助广大研究人员通过一台"Mediator&quo ...
- 一款功能强大的桌面摄影软件—lightroom classic 2021
lightroom classic 2021是一款功能强大的桌面摄影软件,让用户可以创作精美绝伦的照片,在桌面上轻松整理所有照片.您的照片并不一定总能完美地展现您要留存的景物,但使用该款软件您可以获得 ...
- postgresql 客户端_一款功能强大的数据库客户端:DataGrip
前言 在我们日常的程序开发中,很大一部分时间是在与数据库打交道. 查数据,导数据,检查SQL执行计划,优化SQL等,是我们数据库开发工作的重要组成部分,而且很多时候我们会使用到多款数据库,如Oracl ...
- AntiSpy:一款功能强大的反病毒反Rootkit免费工具套件
AntiSpy是一款免费但功能强大的反病毒与反rootkit工具套件,该工具可以给安全研究人员提供最高级别的权限来帮助我们检测.分析和恢复各种内核修改以及钩子设置.这样一来,在AntiSpy的帮助下, ...
- cmd命令不识别exp_GRAT2:一款功能强大的命令amp;控制(C2)工具
GRAT2GRAT2是一款功能强大的命令&控制(C2)工具,该工具出于教育目的开发和设计,GRAT2采用Python3编程语言开发,客户端基于.NET 4.0实现.GRAT2的作者之所以开发G ...
- php在线编辑器_8款功能强大的Java编辑器,建议收藏!「渡一教育」
作为一名合格的程序员,每天打交道最多的除了手机,恐怕就是编辑器了,需要花费大量的时间投身于代码的海洋中,使用各种不同的IDE来开发代码. 对于程序员们来说,一款好用的编辑器,需要像自己的左右手一样.一 ...
最新文章
- Ext fucionchart插件
- 精度87%!业内首个动静统一的图像分割套件重磅推出
- python中matrix是什么意思_初识Python
- 【温故知新】CSS学习笔记(盒子水平居中方法)
- 安装python环境与运行_专栏G|轻松学Python01:Python环境搭建与运行
- idea存在包但是运行项目一直报java.lang.NoClassDefFoundError的问题
- Vue实现简书导航栏效果
- Axure RP9 自学之路1-软件初识
- 湖南工商大学计算机网络原理,李小龙(湖南工商大学计算机与信息工程学院副院长)_百度百科...
- gc buffer busy release
- Windows勒索病毒防范、解决方法全攻略
- 在硅谷,人生的可能性不只有996
- AC9刷梅林安装entware usb挂载 u盘分区使用swap脚本
- 【项目实战1】封装虚拟机(封装母盘,建立子虚拟机)
- 宇电智能调节仪AIBUS 及MODBUS 通讯协议说明V8.0
- 不同层级管理者应具备的特质
- 重磅消息,Micrium的uCOS全家桶将推出免费商业授权
- QRCode.js 生成二维码放大后会模糊的问题
- sql2000 sp3、sql2000 sp4升级补丁下载和安装须知
- 19个必须知道的转录组知识点