我想创建一个弹出菜单,例如this
并且它具有清晰的全屏覆盖,触摸覆盖时,弹出菜单将消失。
我尝试将覆盖层添加到根视图,并向其添加菜单列表视图,为其硬编码位置和框架,与navigationItem对齐,然后创建一个EnvironmentObject来存储覆盖层的切换。在此之后,我达到了目标,但我认为这是机械的,所以我的问题是,有没有很好的方法来做到这一点?例如仅使用视图修饰符,或使用较少的修饰符?
这是我的根视图:
struct Root : View {
TabbedView {
NavigationView {
HomePage()
}
}.overlay(...) <-- add a overlay at root view.
}
struct HomePage : View {
var body: some View {
ZStack {
List {...}
}
.navigationBarTitle("Home")
.navigationBarItems(trailing:
Button(action: {
// show popup menu
}) {
Image(systemName: "plus.circle")
}
)
}
}
我认为此答案可以为您提供帮助。有使用zstack显示弹出窗口。可能是>
的副本