![](/img/trans.png)
[英]How to ignore SwiftUI modal background, or make modal background clear/transparent?
[英]How to hide the modal by tapping the background in SwiftUI
单击按钮后,通过更改“显示”的值来显示或隐藏模态
@State var show = false
但是当模态显示就像Instagram的情况一样时,如何通过点击背景来隐藏模态视图
我通过添加两个 onTapGesture 来解决问题,一个在模态视图上,另一个在 VStack 上,如果您有更好的解决方案,请告诉我,谢谢。
VStack{
Spacer()
Reserve(selected: self.$seleted,show: self.$show)
.offset(y:
self.show ?
(UIApplication.shared.windows.last?.safeAreaInsets.bottom)!+15
: UIScreen.main.bounds.height
)
.onTapGesture {
print("xxx")
}
}
.background(Color(UIColor.label.withAlphaComponent(self.show ? 0.2 : 0)))
.onTapGesture {
self.show = false
}
这是我的示例实现。 我希望它会帮助你。
struct ContentView: View {
@State private var show = false
var body: some View {
ZStack {
Button(action: {
self.show.toggle()
}) {
Text("Show sheet")
}
if show {
CustomSheet(show: $show)
}
}
}
}
struct CustomSheet: View {
@Binding var show: Bool
var body: some View {
VStack {
Spacer()
Color.red.frame(height: 300)
}.background(Color.gray.opacity(0.5).onTapGesture {
self.show.toggle()
})
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.