Yosef
这个库的功能是从 JSON 创建视图,以便能在服务器上更改 app 的界面,并添加新功能而不必更新 app。
DynamicView
这个库有一个中央类 DynamicView
,其方法 createView()
,接收一个 DynamicComponent
和一个 DynamicActionDelegate
,是任何外部用户的中心点。
DynamicComponent
是 JSON 的表示,其中包含创建视图所需的信息(type
,properties
和 children
)。
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
}
代码的解释
- 使用
parse
工厂方法创建了DynamicComponent
。 - 利用创建的组件,通过
createView
方法创建视图。 - 创建的视图被添加为子视图,并使用自动布局将其固定在视图控制器顶部的锚点、左侧和右侧。
安装
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, [emailprotected]
Emannuel Carvalho, [emailprotected]
许可证
Yosef 可在 MIT 许可证下使用。有关更多信息,请参阅 LICENSE 文件。