簡體   English   中英

如何通過點擊 SwiftUI 中的背景來隱藏模式

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM