繁体   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