测试已测试 | ✗ |
语言语言 | SwiftSwift |
许可证 | MIT |
发布最新发布 | 2017年8月 |
SwiftSwift 版本 | 3.1 |
SPM支持 SPM | ✗ |
由 Abel Ernesto Sanchez Ali 维护。
View Builder 项目的目标是在 iOS 中使用 XML 文档基础的声明方式构建任何用户界面。它包含自带的布局引擎。
您可以轻松地
考虑性能处理文档。它们默认会被缓存并自动回收。拥有可变性的概念有助于优化字符串解析。
要开始,最好的方式是观看这个 视频。
创建一些资源
<?xml version="1.1" encoding="UTF-8"?>
<d:Content xmlns:d="@framework" xmlns="com.apple.UIKit">
<d:Resources>
<d:Item name="font" value="d:Font(name: AvenirNext-Regular, size:14)"/>
<d:Item name="color" value="d:Color(#FEFEFE)"/>
<d:Item name="text" value="This is a text"/>
</d:Resources>
</d:Content>
一些视图示例 定义一个包含标签的可滚动部分
<?xml version="1.1" encoding="UTF-8"?>
<d:Content xmlns:d="@framework" xmlns="com.apple.UIKit">
<d:ScrollPanel backgroundColor="d:Color(White)" contentInset="d:EdgeInsets(0)" directionalLockEnabled="true">
<UILabel d:name="contentLabel" numberOfLines="0" margin="d:EdgeInsets(8)" maximumSize="d:Size(2048, -1)"/>
</d:ScrollPanel>
</d:Content>
使用这些资源的操作非常简单
<?xml version="1.1" encoding="UTF-8"?>
<d:Content xmlns:d="@framework" xmlns="com.apple.UIKit">
<d:Resources path="d:PathFromBundle(SomeResources.xml)"/>
<UILabel text="@text" font="@font" textColor="@color"/>
</d:Content>
我是如何从代码中得到这些的
let path = Constants.bundle.path(forResource: "SampleView.xml")!
let view = DocumentBuilder.shared.load(path)
将文档中任何对象的引用将类似于 所有命名节点都可以使用附加属性 documentReferences
访问。
let label = container.documentReferences!["contentLabel"] as! UILabel
ViewBuilder 提供了一个内置的布局引擎。比较布局很困难,但有一些指标将有助于理解哪些更适合您。
以下是一些现有的布局引擎与我们的 PanelLayout 进行比较
自动布局 | 手动布局 | LayoutKit | PanelLayout | |
---|---|---|---|---|
生产力 | 5 | 1 | 4 | 5 |
性能 | 2 | 5 | 5 | 5 |
学习 | 3 | 5 | 3 | 4 |
可读性 | 1 | 3 | 3 | 5 |
灵活性 | 3 | 5 | 3 | 5 |
值得注意的是,这些数字并不是成比例的
MIT
自由软件,太棒了!