🍯
SUIKit
类似于 SwiftUI 的声明式 UIKit 基础框架。
SwiftUI 很棒,但仍然缺乏一些 UIKit 的有用功能,并且不支持较旧的 iOS 版本。这个框架将允许您以声明式的方式使用 UIKit,与 SwiftUI 非常相似,但支持 iOS11+ 以及系统的已知行为。
使用方式
import SUIKit
class ViewController: UIViewController {
var label: UILabel?
override func viewDidLoad() {
super.viewDidLoad()
setup()
}
func setup() {
view.ui.add {
UIView {
UIView {
UILabel(text: "1").ui
.frame(x: 0, y: 44, width: CGRect.screen.width, height: 20)
.link(to: &label)
.view
UILabel(text: "2").ui
.frame(x: 44, y: 88, width: CGRect.screen.width, height: 20)
.view
}
UILabel(text: "3").ui
.frame(x: 88, y: 132, width: CGRect.screen.width, height: 20)
.view
UILabel(text: "4").ui
.frame(x: 132, y: 176, width: CGRect.screen.width, height: 20)
.view
UILabel(text: "5").ui
.frame(x: 176, y: 220, width: CGRect.screen.width, height: 20)
.view
}
.ui
.size(width: CGRect.screen.width, height: 100)
.origin(x: 0, y: 0)
.background(color: .red)
.cornerRadius(18, corners: .bottom)
.view
UILabel(text: "6").ui
.frame(x: 220, y: 264, width: CGRect.screen.width, height: 20)
.view
UILabel(text: "7").ui
.frame(x: 264, y: 308, width: CGRect.screen.width, height: 20)
.view
UILabel(text: "8").ui
.frame(x: 308, y: 352, width: CGRect.screen.width, height: 20)
.view
}
.background(color: .yellow)
}
}
(正在开发新功能和文档)
初始化
由 SUIKit 提供的 UI 元素的自定义初始化器。
UIView
UIView {
UIView()
}
UILabel
UILabel(text: "Label", alignment: .center, color: .black) {
UIView()
}
ViewDSL
SUIKit 为与视图属性交云提供了一些 Domain Specific Language (DSL)。您可以通过 UIView()
.ui 属性访问这些 DSL,它返回一个 ViewDSL 或其继任者的实例。
要求
⌨️ XCode11+📱 iOS 11.0+
安装
SUILayout 可通过 CocoaPods 获取。要安装它,只需将以下行添加到 Podfile 中
pod 'SUIKit'
然后在终端中运行 pod install
。
许可
SUIKit 在 MIT 许可下可用。更多信息请查看 LICENSE 文件。
待办事项
- 为每个 UIView 子类添加 DSL。
- 添加用户交互的便利方法,例如
tapAction(_ execute: ()->Void)
- 完成 Xcode 文档。
- 提供更多示例。
- 添加 API 以支持阴影。
- 添加更多动画模板。
- 添加布局引擎。
- 进行一些 API 升级。
- 添加一些类,例如 SUIGradientView。
- 为 UIViewControllers 提供 DSL。
欢迎贡献或 沟通。S(wift)UIKit 欢迎您的想法。