该软件包处于早期 alpha 阶段(原型阶段)。从终端运行
make workspace以生成示例的.xcworkspace文件
DynamicText (动态文本)DynamicButton (动态按钮)DynamicStack (动态堆栈)DynamicTextField (动态文本字段)DynamicTextView (动态文本视图)DynamicSpacer (动态间隔)DynamicImage (动态图像)DynamicToggle (动态开关)DynamicImage (动态图像)DynamicConfirmationDialog (动态确认对话框)DynamicAlert (动态警报)DynamicDragField (动态拖拽字段)DynamicDropField (动态拖放字段)DynamicLink (动态链接)DynamicNavigationView (动态导航视图)Color 和 Font 创建独立于 SwiftUI 的 DynamicText 修饰符Binding 的辅助工具导入 DynamicForms
声明你的动态表单模型
DynamicForm {
DynamicStack(.vertical) {
DynamicText("Title").bold()
DynamicText("Description")
DynamicStack(.horizontal) {
DynamicText("State: ")
DynamicText("Initial")
}
DynamicStack(.horizontal) {
DynamicButton(
DynamicText("OK"),
action: "content.ok"
)
DynamicButton(
DynamicText("Cancel"),
action: "content.cancel"
)
}
}
}
相当于
VStack { Text("Title").bold() Text("Description") HStack { Text("State: ") Text("Initial") } HStack { Button { DynamicFormClient.shared.send("content.id") } label: { Text("OK") } Button { DynamicFormClient.shared.send("content.cancel") } label: { Text("Cancel") } } }
使用 DynamicFormView 为你的基于动态表单的视图指定主体
DynamicFormView($form)
处理按钮动作
// Returns AnyPublisher<Event, Never> where Event is
// Event {
// id: DynamicElementIdentifier
// action: DynamicElementActionIdentifier
// }
DynamicFormClient.shared.publisher
// Filters events and returns AnyPublisher<Void, Never>
DynamicFormClient.shared.publisher(
for: .init(id: "element", action: "tap")
)
// Filters events by actionID and returns AnyPublisher<Void, Never>
DynamicFormClient.shared.publisher(
for: "actionID"
)
您可以通过将其添加为软件包依赖项来将 DynamicForms 添加到 Xcode 项目中。
"https://github.com/capturecontext/swiftui-dynamic-forms.git"如果您为您的项目使用 SwiftPM,您可以将 StandardClients 添加到您的包文件中。
.package(
name: "swiftui-dynamic-forms",
url: "https://github.com/capturecontext/swiftui-dynamic-forms.git",
.branch("0.1.0")
)
不要忘记目标依赖项
.product(
name: "DynamicFormss",
package: "swiftui-dynamic-forms"
)
此库在 MIT 许可证下发布。有关详细信息,请参阅 LICENSE。