FinniversKit 0.6.0

FinniversKit 0.6.0

Elvis Nuñez 维护。



Carthage compatible

FinniversKit 包含了 FINN iOS 应用的所有 UI 元素,我们组件的主要参考是我们的设计系统,您可以在这里找到文档。此框架由用于作为 FINN iOS 应用构建块的组件组成。

为了独立开发我们的组件,我们将它们结构化以便它们可以独立使用。运行示例项目以查看所有组件列表。

安装

Carthage

github "finn-no/FinniversKit" "master"

使用方法

导入框架以访问所有组件。

import FinniversKit

有趣的事情

文件夹结构(测试和示例)

受到Kickstarter(以及Ruby on Rails)的启发,我们将相关文件放在一起,即使这些文件放在不同的目标中。我们相信,文件靠得更近可以使你意识到在更改后可能受到影响的不同元素。

委托和数据源(而不是块和注入)

为了保持一致性,我们选择使用数据源为可回收视图提供数据,并使用委托在视图中进行交互。

如果视图不可回收,则使用ViewModels。在一致性而非实用主义之间进行选择时会存在权衡,但我们希望通过有一个清晰的模式,减少讨论点,让我们能够专注于改进UI并为我们的用户增加价值。

为什么不使用沙盒?

我们的演示项目被设置为每个组件都是隔离的,我们最初开始使用Xcode的沙盒,但我们很快发现它的容量不足以满足需求,重新加载时间并不比直接更改并重新运行项目更快,而且无法调试和设置断点,并且我们无法使用Xcode中许多有用的实用工具,如视图层次结构检查器。最后,我们必须在框架中任何更改之后重新构建项目,这使我们不像使用普通Xcode项目(更改后无需重新构建)那样高效。

无障碍

我们所做的一切都旨在使其可访问,我们关注的两个主要领域是VoiceOver和Dynamic Type。

快照测试

在制作UI更改时,我们通常会请求请求前后截图,添加快照测试使这一点变得简单,如果有UI更改,您在CI构建时会导致失败。

芬尼弗斯工具包使用优步的快照测试用例来比较UIView的内容和参考图像。

当你运行测试时,芬尼弗斯工具包将抓拍所有组件并将查找差异。如果检测到差异,你将通过失败的测试形式得知。在本地运行测试将生成旧图像和新图像之间的差异,这样你可以看到导致测试失败的原因。

测试新组件

要测试新组件,请去DemoSnapshotTests.swift,在合适的部分下添加一个名为你组件的新func。例如,如果你的组件是一个Fullscreen组件,名为RegisterView,那么你需要在FullscreenViewTests中添加一个方法,你的方法看起来应该像这样:

func testRegisterView() {
    snapshot(.registerView)
}

请注意,snapshot方法是一个辅助方法,将在内部调用FBSnapshotVerifyView

验证现有组件的更改

如果你对任何组件进行了更改,在你更改recordModetrue后必须运行该组件的测试。这样做将生成一个新参考图像,该图像将用于以后验证影响你的组件的更改。生成参考图像后,将recordMode改回false

许可证

芬尼弗斯工具包在Apache License 2.0下可用。有关更多信息,请参阅LICENSE文件

FINN.no的标志、图标、图像、资产、声音等专用于在FINN.no内使用,该库的主要目的是内部使用,并且作为其他团队在FINN.no内如何做事的参考。