ios - 如何通过点击 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()
})
}
}
推荐阅读
- ios - Bundle(标识符:“org.cocoapods.MyPrivatePod”)返回零
- java - 解决Java堆空间错误当向double Arraylist添加新值时
- heroku - Heroku:无法升级评论应用程序
- python - 在尝试最大化函数时,索引 1 超出轴 0 的范围,大小为 1
- javascript - 根据内容可编辑更改窗口标题
- django - 尝试访问 Google Cloud Run 中的容器时出现错误请求 (400)(系统调用不受支持)
- google-maps - 将 OnEdit 添加到脚本或在计算 Google 表格中的单元格后停止运行脚本?服务调用太多次尝试 Utilities.sleep(1000)
- neutralinojs - 如何让 NeutralinoJS 在 Mac OS X 中工作?
- sql - 在 Oracle 中从头开始重新分区表
- javascript - d3 - 使用鼠标滚轮缩放时禁用滚动?