复杂页面布局框架IGListKit OC版本Demo

        做App的时候,有时会遇到一些比较复杂一点的页面。 用Storyboard肯定是最方便的布局办法,这个时候需要注意一下自动布局各个尺寸的屏幕问题就行。 但是如果页面需要一个后续改动或者说是动态控制的页面(当然动态的页面用Web写更好)。这个时候就给大家介绍一个框架叫做IGListKit。

       IGListKit在GitHub上官方的介绍为A data-driven UICollectionView framework for building fast and flexible lists.
一个数据驱动的UICollectionView框架,用于构建快速灵活的列表。所以这个框架的核心是在数据上,可以通过不同的数据类型灵活的展示不同的布局。这个框架是由OC写的,并且完全支持Swift,官方的实例是由Swift写成,所以此处为大家列举一个简单的OC例子,大概介绍其用法。

pod 'IGListKit'

  pod导入三方库。ViewController里面的用法是

    self.collectionView = [[UICollectionView alloc] initWithFrame:self.view.bounds collectionViewLayout:[[UICollectionViewFlowLayout alloc] init]];
    self.collectionView.backgroundColor = [UIColor whiteColor];
    IGListAdapterUpdater *updater = [[IGListAdapterUpdater alloc] init];
    _adapter = [[IGListAdapter alloc] initWithUpdater:updater viewController:self workingRangeSize:0];
    _adapter.collectionView = self.collectionView;
    _adapter.dataSource = self;

    [self.view addSubview:self.collectionView];

其中里面IGListAdapterUpdater是数据控制协议,collectionView也是放在里面作为其属性。然后需要按照需要定义自己项目需要的数据模型。例如这样的

需要注意的时候model类都实现了IGListDiffable协议,该协议的作用是使用额外一些内存空间,降低时间复杂度到O(n),并且能准确获取所有Insert/Delete/Move操作。内部用哈希的方式实现,具体有需要了解的朋友可以在网上找到其他一些相关的介绍。协议中需要实现俩个数据Model的对比方法以判断其异同。例如Model中有数组元素,可以先判断数据个数,再循环判断数组里面的对象。

然后在需要实现的IGListAdapterDataSource协议中,返回Section的控制类。

如上图的示例中,可以通过对Model的不同状态来返回不同的控制类。以实现对不同布局逻辑的代码分离。

在sectionController控制类中实现每个cell的大小和具体内容。 cell大小也可以根据数据需求做自定义,这样就有效且灵活的实现了复杂逻辑的布局,并且分离出不同逻辑的代码。如果某一个部分需要改动也不会影响到其他的部门。 

以上就是大概的用法,写的比较简单。详情可以参考Demo

***以上  项目名称T_yunIGListKit
 

(欢迎随手给一颗星星哦~)本篇博客Demo地址https://github.com/xmy0010/DemoForCSDN

本人邮箱18144200589@163.com欢迎小伙伴一起讨论,学习,进步。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值