ViewBuilder 0.0.2

ViewBuilder 0.0.2

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最新发布2017年8月
SwiftSwift 版本3.1
SPM支持 SPM

Abel Ernesto Sanchez Ali 维护。



  • 作者:
  • Abel Ernesto Sanchez Ali

View Builder 项目的目标是在 iOS 中使用 XML 文档基础的声明方式构建任何用户界面。它包含自带的布局引擎。

功能特性

  • 第一个完整声明性的 XML 文档用于构建 iOS 中的任何对象。
  • 自定义布局引擎,性能是自动布局的 4 倍。
  • 内置了对资源、样式、视图模板等的支持。
  • 支持渐变和 SVG 矢量图形。

您可以轻松地

  • 拥有所有您的资源并在任何地方重用它们。
  • 定义可以自由应用的对象样式。
  • 有视图模板可以帮助您提高生产力。
  • 可以在文档中使用任何自定义对象并扩展文档语言。

考虑性能处理文档。它们默认会被缓存并自动回收。拥有可变性的概念有助于优化字符串解析。

示例

要开始,最好的方式是观看这个 视频

创建一些资源

<?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 提供了一个内置的布局引擎。比较布局很困难,但有一些指标将有助于理解哪些更适合您。

  • 生产力 - 创建和定义 UI 元素所需的努力。
  • 性能 - 测量/布局/渲染过程的速度。
  • 学习曲线 - 学习和使用该技术的难易程度。
  • 可读性 - 审查的难易程度,其与 diff 兼容,等等。
  • 灵活性 - 修改、自定义和扩展的难易程度。

以下是一些现有的布局引擎与我们的 PanelLayout 进行比较

自动布局 手动布局 LayoutKit PanelLayout
生产力 5 1 4 5
性能 2 5 5 5
学习 3 5 3 4
可读性 1 3 3 5
灵活性 3 5 3 5

值得注意的是,这些数字并不是成比例的

待办事项

  • 编写更多的测试
  • 还有更多

许可

MIT

自由软件,太棒了!