presentationMode在iOS算是一个特色了,非常方便的全屏弹窗,可以下拉关闭窗口。弹出的动画非常流畅。这里来记录一下如何写一个presentationMode弹窗和关闭presentationMode的窗口。

样式

presentationMode弹窗非常常见,在iOS几乎无处不在。

iCloud存储升级

示例

示例源代码

创建presentationMode

例如要打开EditingView(),则需要有一个@State的变量,用来监听弹窗时机。

1
@State var showEditing = false

关联变量并设定弹窗内容

在任意层Stack后面添加.sheet

1
2
3
4
.sheet(isPresented: $showEditing, content: {
EditingView()
.environmentObject(userData)
})

然后利用Button或者是onTapGesture改变变量(本文为showEditing)的布尔值为true,即可弹出窗口。

关闭弹窗

系统自带了一个向下滑动即可关闭的操作,但是我们有时候还是需要点击按钮或者触发函数时关闭窗口的需求。

在目标视图(本文为EditingView())添加一个Environment变量。

1
@Environment(\.presentationMode) var presentation

这个变量可以对presentationMode有很多操作,比如我们点击一个按钮关闭掉这个弹窗。

1
2
3
4
5
6
Button(action: {
self.presentation.wrappedValue.dismiss()
}) {
Text("关闭弹窗")
}

就只需要执行这一段就可以了

1
self.presentation.wrappedValue.dismiss()

大功告成!

现在你已经成功能写出弹窗并且关闭掉它了!~