ViewKit 是一个轻量级且用户友好的 Swift 包,它将类似 SwiftUI 的声明式语法带到 UIKit。它提供了一种以声明式和链式方式编写 UIKit 代码的方法,类似于 SwiftUI,从而使 UIKit 开发更加精简和易于上手。ViewKit 使用方法链来支持 UIKit 中可用的大多数自定义属性,从而实现更流畅和可读的语法。
您可以使用 Swift Package Manager 安装 ViewKit。只需将以下行添加到您的 Package.swift
文件中
dependencies: [
.package(url: "https://github.com/lucaswkuipers/ViewKit.git", from: "1.0.0")
]
ProgrammaticView
是 ViewKit 中用于创建视图的主要协议。以下是如何使用它
通过实现 ProgrammaticView
协议并在 body
属性中提供您的布局来定义您的视图。
这是一个例子
import ViewKit
final class MyView: ProgrammaticView {
var body: UIView {
VerticalStack(spacing: 20) {
UILabel("Hello, world!")
.font(.preferredFont(forTextStyle: .largeTitle))
UIButton("Tap me!") { _ in print("Tapped") }
.font(.preferredFont(forTextStyle: .title1))
.backgroundColor(.systemBlue)
.cornerRadius(10)
}
}
}
VerticalStack
和 HorizontalStack
的工作方式与 SwiftUI 中的 VStack
和 HStack
类似。它们分别用于垂直和水平堆叠视图。
VerticalStack(spacing: 20) {
// Your views here
}
HorizontalStack(spacing: 20) {
// Your views here
}
此外,UIView
可以像 SwiftUI 中的 ZStack
一样使用,用于将视图堆叠在彼此之上。
Filler
的工作方式与 SwiftUI 中的 Spacer
类似。它会推开相邻的视图,占据所有可用的空间。
HorizontalStack(spacing: 20) {
UILabel("Hello")
Filler()
UILabel("World")
}
在此示例中,“Hello”和“World”标签将被推到屏幕的相对两侧,它们之间的所有剩余空间都将由 Filler
填充。
您可以将此 ProgrammaticView
与自定义 ViewController
一起使用,该自定义 ViewController
在其构造函数中接受 ProgrammaticView
并将其设置为其视图。
这是一个例子
let viewController = ViewController(with: MyView())
您还可以通过将您的 ProgrammaticView
嵌入到 PreviewContainer
中,在 Xcode 画布中预览您的 ViewKit 视图,如下所示
import SwiftUI
struct MyView_Previews: PreviewProvider {
static var previews: some View {
PreviewContainer {
MyView()
}
}
}
ViewKit 利用 Swift 的结果构建器和 fluent interfaces 来创建更具声明性的语法并减少样板代码。这有助于保持您的 UIKit 代码简洁易懂。
ViewKit 在 MIT 许可下可用。有关更多信息,请参见 LICENSE 文件。
在 Swift Package Index 上查看: https://swiftpackageindex.cn/lucaswkuipers/ViewKit