我该如何呈现将占据全屏且无法通过向下滑动来消除的模式?目前,我正在使用.sheet
来提出可忽略的模态。
我还没有注意到Xcode中的任何beta版本更改都会改变这种行为。
任何帮助将不胜感激:)
答案 0 :(得分:4)
我不确定这是否符合您的意愿,但是可以通过使用ZStack和状态变量来控制其隐藏/显示来创建自己的模态屏幕。
struct CustomModalPopups: View {
@State private var showingModal = false
var body: some View {
ZStack {
VStack(spacing: 20) {
Text("Custom Popup").font(.largeTitle)
Text("Introduction").font(.title).foregroundColor(.gray)
Text("You can create your own modal popup with the use of a ZStack and a State variable.")
.frame(maxWidth: .infinity)
.padding().font(.title).layoutPriority(1)
.background(Color.orange).foregroundColor(Color.white)
Button(action: {
self.showingModal = true
}) {
Text("Show popup")
}
Spacer()
}
// The Custom Popup is on top of the screen
if $showingModal.wrappedValue {
// But it will not show unless this variable is true
ZStack {
Color.black.opacity(0.4)
.edgesIgnoringSafeArea(.vertical)
// This VStack is the popup
VStack(spacing: 20) {
Text("Popup")
.bold().padding()
.frame(maxWidth: .infinity)
.background(Color.orange)
.foregroundColor(Color.white)
Spacer()
Button(action: {
self.showingModal = false
}) {
Text("Close")
}.padding()
}
.frame(width: 300, height: 200)
.background(Color.white)
.cornerRadius(20).shadow(radius: 20)
}
}
}
}
}
(摘自“ SwiftUI视图”书) 因此,这里的弹出窗口很小,但是您可以使用该VStack上的frame修改器调整尺寸以使其全屏显示。