SUIKit 0.2.1

SUIKit 0.2.1

mxcat. 维护。



SUIKit 0.2.1

SUIKit🍯

CI Status Version License Platform

类似于 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 欢迎您的想法。 🌝