Yosef 0.0.6

Yosef 0.0.6

Kaique Pantosi 维护。



 
依赖
Kingfisher~> 4.0
lottie-ios~> 2.0
 

Yosef 0.0.6

  • 作者
  • Guilherme Bayma, Emannuel Carvalho, Kaique Pantosi, Bruno Mazzo 和 Concrete

Yosef

CI Status Version License Platform

这个库的功能是从 JSON 创建视图,以便能在服务器上更改 app 的界面,并添加新功能而不必更新 app。

DynamicView

这个库有一个中央类 DynamicView,其方法 createView(),接收一个 DynamicComponent 和一个 DynamicActionDelegate,是任何外部用户的中心点。

DynamicComponent 是 JSON 的表示,其中包含创建视图所需的信息(typepropertieschildren)。

DynamicComponent

DynamicComponent 是包含将要由库创建的视图信息的对象。它包含三个主要信息

  • type:一个 String 表示是“按钮”、“文本”等。
  • properties:一个 Array<DynamicProperty>,包含“textColor”,“textSize”,“action”等信息。
  • children:一个 Array<DynamicComponent>?,包含要在创建的组件内显示的组件。

DynamicComponent 有一个工厂方法 parse(dictionary: [String: Any]),用于根据服务器返回的 JSON 字典创建实例。

示例

假设我们有一个视图控制器,其视图需要用从服务器返回的信息填充,这些信息以字典 [String: Any] 的形式表示。代码如下所示:

func updateUI() {
    // 1
    let comp = ITDynamicComponent.parse(dictionary: info)
    // 2
    let view = ITDynamicView.createView(dynamicsComponent: comp, actionDelegate: self)
    // 3
    self.view.addSubview(view)
    view.translatesAutoresizingMaskIntoConstraints = false
    view.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 20).isActive = true
    view.leadingAnchor.constraint(equalTo: self.view.leadingAnchor, constant: 20).isActive = true
    view.trailingAnchor.constraint(equalTo: self.view.trailingAnchor, constant: -20).isActive = true
}

代码的解释

  1. 使用 parse 工厂方法创建了 DynamicComponent
  2. 利用创建的组件,通过 createView 方法创建视图。
  3. 创建的视图被添加为子视图,并使用自动布局将其固定在视图控制器顶部的锚点、左侧和右侧。

安装

Yosef 通过 CocoaPods 提供。要安装,请将以下行添加到您的 Podfile,并运行 pod install

pod "Yosef"

开发要求

为了获得适当的开发环境,使用 Bundler 安装项目的 Gemfile

项目可以在 Example 文件夹中访问,打开 Yosef.workspace 工作空间。

依赖项

测试

单元测试

在单元测试中,我们使用 XCTestCase。对于库返回的视图的测试,还使用 iOSSnapshotTestCase

覆盖率

可以通过运行脚本 test.sh 来获取测试覆盖率。

$ sh test.sh

结果可以通过打开 coverage_report 文件夹中的 index.html 页面来访问。

iOS 团队

Guilherme Bayma, [email‚protected]
Emannuel Carvalho, [email‚protected]

许可证

Yosef 可在 MIT 许可证下使用。有关更多信息,请参阅 LICENSE 文件。