创建自己的UICollectionView API

在本文中,我们将创建一个外部框架,该框架将公开一些单元格,背景线和水平线装饰UICollectionViewFlowLayout以及一个垂直的自定义UICollectionViewFlowLayout ,该UICollectionViewFlowLayout管理单元格之间的边距和填充。

为什么要使用UICollectionview?

根据您的应用程序,使用UICollectionView来构建屏幕可以节省大量时间,主要是在您的屏幕是面向数据和上下文的情况下。
在两个其他对象之间添加一个单元比更新约束来显示或隐藏UI元素要容易得多。

UICollectionView的强大功能是DecorationView 。 在不增加单元格复杂性的情况下,您可以在其中一些背景后面添加背景,并在整个应用程序中重复使用它们。

最后, UICollectionView允许仅用几行代码即可对屏幕中的更改进行动画处理。

为什么要使用API​​?

大多数情况下,应用程序屏幕的设计是相同的:在许多屏幕中,相同的按钮,相同的元素只是内容不同但布局相同。

创建API的目的是以最简单的方式使用这些元素。 UICollectionView API的主要目标是花费更少的时间在构建屏幕上,并花费更多的时间来实现和测试逻辑,改善细节并拥有更易于维护的代码。

另一个优点是在应用程序中提供总体UI一致性,并尽可能与您的设计师提供的模型相似地创建屏幕。

科洛尔

Apple提供的用于实现UICollectionView的API是面向indexPath的。 在oui.sncf,我们创建了一个名为Collor的顶层,以实现面向数据的实现。 该库的主要目标是在一个文件中描述UICollectionView的结构。

在继续阅读本文之前,您应该看一下这两篇文章:

Collor:UICollectionView的面向MVVM数据的框架
我们已经建立了一年的框架,以简化和加速我们的UICollectionView的开发。 UICollectionView:如何轻松处理更新
当您使用CollectionViews或TableViews时,困难的部分是当您需要添加,删除,移动一些单元格时… medium.com

我们走吧

1)创建自己的框架

为了优化编译时间并最小化依赖关系,最好的方法是在工作空间中创建一个框架。 我们将其命名为CollorAPI 。 如果您打算在其他项目中使用此框架,则建议您创建一个私有容器。

我们在这里不解释创建框架的过程,如果需要,您可以找到很多教程:

模块化iOS应用程序
“只要离开您的计算机去喝咖啡,应用程序就会编译!” medium.com

2)唯一的节描述符

大多数时候,唯一可定制的节描述符足以满足我们的需求。

4)垂直空间

必须对每个通用单元进行边缘到边缘设计。 然后,将在collectionView的布局中以及带有部分插图的地方处理边距和填充。 通过应用此规则,无需增加单元格的复杂性或添加空白单元格来填补空白,就更容易遵守设计屏幕。

首先,我们在builder实现此功能:

最后,collectionData如下所示:

oui.sncf处 ,有11种装饰类型。 它们使您可以添加票证背景或建立旅程时间表。 对于时间轴,我们在部分构建器内部创建了一个嵌套构建器。 通过这种方式,角色可以很好地分离,并且其他开发人员可以轻松使用该API。 单元在布局中向右移动,以便重用它们,而不是使用内部偏移量创建新单元。

timeLineBuilder

继续,在本文中,我们介绍了您未来框架的基础。 现在就取决于您的需求了!

感谢您的阅读,并让我知道您在Twitter上的想法。