美文网首页程序员iOS学习笔记IOS
ZZFLEX — iOS UI敏捷开发框架

ZZFLEX — iOS UI敏捷开发框架

作者: 李伯坤 | 来源:发表于2019-06-18 14:11 被阅读4次

一、简介

ZZFLEX是一个基于UIKit开发的完善的iOS UI敏捷开发框架,包含常用控件的链式API拓展、一个数据驱动的列表框架、一个事件处理队列。
Github:https://github.com/tbl00c/ZZFLEX

1.gif

二、功能模块

2.1、UIView+ZZFLEX

UIView+ZZFLEX为UIkit中的常用控件增加了链式API的拓展,引入它后,我们可以直接为view addButtonaddLabeladdImageView等。然后通过链式API,可更加连贯快捷的进行控件的属性设置、Masonry布局和事件处理。

以给视图添加button为例说明:

demo2.png

可以看出,链式API十分的简洁高效,在大大缩减代码行数的同时、提高了代码的可读性。它使得同一控件的代码逻辑得以集中,我们称之为“控件的模块化”。

UIView+ZZFLEX是使用Objective-C的泛型实现的,可以无视继承关系、随意顺序设置控件属性。

如需对控件的属性进行编辑,可以这样写:

button.zz_make.frame(CGRectMake(0, 0, 100, 40)).title(@"hi").titleColor(@"how are u");

如需单独创建一个控件,不添加到视图上:

UIButton *button = UIButton.zz_create(1001).title(@"hello").titleHL(@"world").view;

会发现,在添加视图的时候,ZZFLEX会强制为视图添加一个tag,这样做的初衷是方便定位,此外如果你需要做一些用户行为统计及类似的功能,你或许会更感谢这种做法。

目前,UIView+ZZFLEX已添加链式API的控件有:

UIView, UIImageView, UILabel, UIControl, UITextField, UIButton, UISwitch, UIScrollView, UITextView, UITableView, UICollectionView

2.2、ZZFlexibleLayoutViewController

ZZFlexibleLayoutViewController是一个基于collectionView实现的数据驱动的列表页框架,可大幅降低复杂列表界面实现和维护的难度。

容器层

使用它,我们几乎无需关心和实现collectionView的各种代理方法。它的设计使得列表页的构建就如同拼图一般,只需要一件件的add需要的模块,我们想要的界面就绘制出来了。因此,使用它实现的页面极具拓展性维护性

demo3.png

在ZZFlexibleLayoutViewController中,我们不在使用sectionIndex/indexPath确定section/cell的位置,转而使用更唯一的sectionTag/viewTag代替。因为前者本质上是一个很不确定的数据、它会随着界面的变化而发生改变,很多与tableView/collectionView相关的崩溃也都与此有关。

元素层

和之前不同的是,所有添加到ZZFlexibleLayoutViewController中的cell、header、footer需要额外实现一个协议—ZZFlexibleLayoutViewProtocol:

viewProtocol.png

cell/view实现这个协议的目的和好处有两个:

1、框架层得以统一处理collectionView与cell/header/footer的交互;

2、方便进行整体的性能优化,如缓存view/header/footter计算大小的方法的数据。


目前主要支持的功能:

添加 插入 获取 批量添加 批量插入 批量获取 编辑 删除 清空子数据 更新高度
section ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
cell ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
header/footer ✔️ ✔️ ✔️ ✔️
  • 最新版ZZFLEX已提供cell无需实现viewProtocol的方案,详见Github。
2.3、ZZFLEXAngel

ZZFlexibleLayoutViewController为列表页的开发带来的优异的拓展性和可维护性,但它是一个VC级别的实现,在一些业务场景下还是不够灵活的。

ZZFLEXAngel是ZZFlexibleLayoutViewController核心思想和设计提炼而成的一个“列表控制中心”,它与页面和列表控件是完全解耦的。

使用它,我们只需通过任意collectionView或tableView来初始化一个ZZFLEXAngel实例(本质是将列表页的dataSource和delegate指向ZZFLEXAngel或其子类的实例),然后就可以通过这个实例、和ZZFlexibleLayoutViewController中一样,使用那些好用的API了。

demo5.png
2.4、ZZFLEXRequestQueue

一些复杂的页面中会存在多个异步数据请求(net、db等),然而同时发起的异步请求,其结果的返回顺序是不确定的,这样会导致UI展示顺序的不确定性,很多情况下这是我们不希望看到的。

ZZFLEXRequestQueue的核心思想是“将一次数据请求的过程封装成对象”,它可以保证在此业务场景下,按队列顺序加载展示UI。

详见Demo。

三、使用ZZUIHelpler自动生成代码

ZZUIHelpler 已支持自动生成ZZFLEX代码,点点点即可~

ZZUIHelper.png

详见 https://github.com/tbl00c/ZZUIHelper

相关文章

  • ZZFLEX — iOS UI敏捷开发框架

    一、简介 ZZFLEX是一个基于UIKit开发的完善的iOS UI敏捷开发框架,包含常用控件的链式API拓展、一个...

  • ZZFLEX 使用

    ? 使用 ZZFLEX[https://github.com/tbl00c/ZZFLEX] 框架的模版代码。 命令...

  • Vue2.0敏捷学习及项目开发

    Vue2.0敏捷学习#### 摘要#### 在以前的项目中,主要使用各类UI框架配合jquery进行敏捷开发。经过...

  • 腾讯QMUI框架(iOS)介绍

    小浣熊博客 QMUI框架(iOS)由腾讯QMUI团队开发,目的是提高iOS UI开发效率.在Apple Store...

  • flutter-MacOs App2

    Flutter 框架 Flutter 是 Google 开发的一套全新的跨平台、开源 UI 框架,支持 iOS、A...

  • 你需要知道的重要的框架

    iOS应用程序基于Foundation和UIKit框架 在你开发程序时,主要使用框架就是Foundation和UI...

  • AS找不到New Flutter Project

    最近Google推了一个新的移动UI框架——Flutter,可以使IOS和Android高效开发统一的UI界面,从...

  • 一不小心入坑了Flutter

    一、为什么决定入坑Flutter Flutter是Fuchsia的开发框架,是一套移动UI框架,可以快速在iOS、...

  • 一个android开发者的Flutter环境搭建

    Flutter是谷歌开源的一套移动UI开发框架,可以快速构建android和ios的原生应用。看了google开发...

  • Flutter入门

    前言 Flutter是Google开发的一套全新的跨平台开源UI框架,使用Dart语言开发,支持IOS、Andro...

网友评论

    本文标题:ZZFLEX — iOS UI敏捷开发框架

    本文链接:https://www.haomeiwen.com/subject/xicfqctx.html