[英]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.