测试已测试 | ✓ |
语言语言 | SwiftSwift |
许可证 | MIT |
发布最新版本 | 2017年11月 |
SwiftSwift 版本 | 4.0 |
SPM支持 SPM | ✗ |
由 Dale Webster 维护。
EverLayout 将 JSON/XML 数据转换为 iOS 结构,可以在运行时下载、重用和更新。
更详细的文档 在这里。
文档是最近为版本 0.9.3 更新的。
将 EverLayout 添加到您的 Podfile
platform :ios, '8.0'
use_frameworks!
pod 'Everlayout'
创建一个包含框架的 Cartfile 并运行 carthage update。
github "acrocat/EverLayout"
EverLayout Bridge 可以通过 Node Package Manager 安装。
npm install -g ever-layout-bridge
更多信息 在这里
{
"name":"ViewController",
"root":{
"views":{
"exampleButton":{
"constraints":{
"center":"@super",
"width":"+120",
"height":"+80"
},
"properties":{
"text":"Tap Me!"
}
}
}
}
}
import UIKit
import EverLayout
class ViewController: UIViewController {
private var layout : EverLayout?
public let exampleButton : UIButton = UIButton()
override func viewDidLoad() {
super.viewDidLoad()
let layoutData = NSData(contentsOfFile: Bundle.main.path(forResource: "ViewController", ofType: "json", inDirectory: "Layouts")!) as! Data
self.layout = EverLayout(layoutData: layoutData)
self.layout?.build(onView: self.view, viewEnvironment: self)
}
}
{
"name":"ViewController",
"root":{
"views":{
"!redSquare":{
"constraints": {
"width height":"+180",
"center":"@super <24"
},
"properties":{
"backgroundColor":"red"
}
}
}
}
}
我正在运行模拟器侧边的空白应用程序
以及一个由 JSON 描述的 ViewController 布局,该布局由默认的
View Controller 加载。该应用程序已连接到 EverLayout Bridge,
在每次保存布局文件时,该 Bridge 会为它提供布局更新。
在我给出的例子中,我只是更改一个 UIView 属性
以演示如何在无需重新编译应用程序的情况下设计/构建布局。
。
目前 EverLayout 更像一个实验,而不是一个解决方案。
这个想法是在对 Interface Builder
和现有的替代方案——笨拙的布局代码的挫败感中诞生的。
本项目的目标是找到一个中间点,既可以提供 IB 的实时“视觉”方法,
同时还可以提供用代码描述的布局的灵活性和可重用性。
。
欢迎使用对 EverLayout 的贡献!如果您有功能请求,请提交问题,或者通过 [email protected] 或 @greatirl 联系我。