SweetUI 1.0.0-beta.3.4

SweetUI 1.0.0-beta.3.4

mxcat. 维护。



SweetUI 1.0.0-beta.3.4

SweetUI🍯

SwiftUI样式声明性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.layoutSomeViewProxy.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欢迎您的想法。 🌝