返回
揭秘 SwiftUI Sheet 扩展的强大魔力:如何在 SwiftUI 中实现 interactiveDismissDisabled!
IOS
2023-11-05 06:21:04
在 SwiftUI 3.0 中,Apple 新增了一个功能强大的特性 —— interactiveDismissDisabled
,可让您禁用 SwiftUI Sheet 的交互式关闭手势。这无疑为 SwiftUI 开发者带来了更多可能性和控制权,但要充分利用它,您需要掌握一些关键技巧。
探索 SwiftUI 3.0 中的 interactiveDismissDisabled 的神奇力量
interactiveDismissDisabled 允许您在用户在 Sheet 上拖动时禁用交互式关闭手势。这在某些情况下非常有用,例如当您希望用户在完成某些任务之前无法关闭 Sheet 时。
要使用 interactiveDismissDisabled
,您需要在您的 Sheet
上设置一个 modifier
,如下所示:
Sheet(isPresented: $isShowing) {
// Your sheet content here
}
.interactiveDismissDisabled(true)
这将禁用 Sheet
的交互式关闭手势,并且用户将无法通过拖动来关闭它。
编写更 Swift UI 的功能扩展
您还可以创建一个功能扩展来简化 interactiveDismissDisabled
的使用。为此,您可以创建一个名为 MySheet
的结构体,如下所示:
struct MySheet: View {
@Binding var isShowing: Bool
var content: () -> AnyView
var body: some View {
Sheet(isPresented: $isShowing) {
content()
}
.interactiveDismissDisabled(true)
}
}
现在,您可以使用 MySheet
就像使用任何其他 View
一样。只需在 content
参数中传递一个闭包即可,该闭包将返回要显示在 Sheet
中的内容。
MySheet(isShowing: $isShowing) {
AnyView(Text("Hello, world!"))
}
结论
interactiveDismissDisabled
是一个强大的工具,可让您对 SwiftUI Sheet 的行为进行更细粒度的控制。通过创建一个功能扩展,您可以使 interactiveDismissDisabled
更易于使用。
如果您想进一步了解 SwiftUI 中的 Sheet,我建议您查看 Apple 的文档。您还可以在 SwiftUI Lab 网站上找到一些很棒的教程和示例。
我希望这篇文章对您有所帮助。如果您有任何问题,请随时与我联系。