🍯
SweetUISwiftUI样式声明性UIKit框架。
SwiftUI非常强大,但仍缺乏UIKit的一些有用特性,且不支持较旧的iOS版本。此框架将允许您以声明性方式使用UIKit,与SwiftUI非常相似,但支持iOS 10+和系统的已知行为。
用法
// JUMPING BUTTON EXAMPLE
import SweetUI
class ViewController: UIViewController {
private(set) var button: UIButton?
override func viewDidLoad() {
super.viewDidLoad()
// Setup view
view.ui.add {
// Add title
UILabel(text: "Jumping button", alignment: .center, color: .red).ui
.font(.systemFont(ofSize: 32, weight: .semibold))
.center(.init(x: view.center.x, y: view.center.y - 60))
.size(.init(width: CGRect.screen.width, height: 32))
// Add button
UIButton(title: "Tap me!") { [weak self] in
print("The button was tapped.")
let position0 = self?.button?.center ?? .zero
let position1 = CGPoint(x: position0.x, y: position0.y - 32)
self?.button?.ui
.animate(.sequence, // Perform one by one
.move(center: position1, // Jump up
duration: 0.1),
.move(center: position0, // Fall down
duration: 0.1))
}.ui
.link(to: &button) // Store UIButton in self.button
.title(color: .blue)
.center(view.center)
.size(.init(width: 100, height: 32))
}
}
}
(正在开发新功能和相关文档)
初始化
SwiftUI为您的视图提供了自定义的便利初始化器。
视图代理
SweetUI提供了一些代理,用于与您视图的属性进行交互。您可以通过SomeView.ui
属性访问这些DSL,它返回一个视图代理或其后续实例。
LayoutProxy
甜UI提供了一些代理来与我视图的属性进行交互。您可以通过SomeView
.layout或SomeViewProxy
.layout属性访问这些DSLs,该属性返回一个LayoutProxy或其后继实例。
需求
⌨️ XCode12+📱 iOS 10.0+
安装
SUILayout通过SwiftPM提供。
.package(url: "https://github.com/maximkrouk/SweetUI.git", from: "1.0.0-beta.3.4")
.product(name: "SweetUI", package: "SweetUI")
许可
甜UI采用MIT许可。有关更多信息,请参阅LICENSE文件。
待办事项
- 条件构建
✅ - 为每一个子类UIView添加DSL。
- 添加用户交互的方便方法,例如
tapAction(_ execute: () -> Void)
✅ - 完成Xcode文档。
- 提供更多示例。
- 添加API以支持阴影。
✅ - 添加更多动画模板。
✅ - 添加布局引擎。
✅ - 进行一些API改进。
- 为UIViewControllers提供DSL。
- 混合顺序和并行动画。
请随时贡献或沟通。甜UI欢迎您的想法。