该软件包处于早期 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。