【发布时间】:2019-11-27 18:18:01
【问题描述】:
Goal 是一个菜单,其中: 用户点击绿色按钮:显示绿色菜单 用户点击蓝色按钮:显示蓝色菜单
我做了什么: 设置“当点击绿色时,绿色是 ZStack 中的顶层)的状态。
结果: 没用: 当点击绿色时,它变为绿色。但然后我点击蓝色,它保持绿色。逻辑肯定不正确
import SwiftUI
struct Menutest: View {
@State private var showall = false
@State private var showgreen = false
@State private var showyellow = false
@State private var showblue = false
var body: some View {
NavigationView {
HStack {
Spacer()
ZStack {
Rectangle()
.foregroundColor(.blue)
//.opacity(showblue ? 1 : 0)
.zIndex(showblue ? 1 : 0)
Rectangle()
.foregroundColor(.green)
//.opacity(showgreen ? 1 : 0)
.zIndex(showgreen ? 1 : 0)
Rectangle()
.foregroundColor(.yellow)
//.opacity(showyellow ? 1 : 0)
.zIndex(showyellow ? 1 : 0)
}
.frame(width: 400.0)
// .offset(x: showall ? 0 : UIScreen.main.bounds.width)
.animation(.easeInOut)
}
.navigationBarItems(
trailing:
HStack {
Button(action: {
// self.showall.toggle()
self.showyellow.toggle()
})
{
Text("Yellow")
}
Button(action: {
// self.showall.toggle()
self.showgreen.toggle()
})
{
Text("Green")
}
Button(action: {
// self.showall.toggle()
self.showblue.toggle()
})
{
Text("Blue")
}
}
)
}
.navigationViewStyle(StackNavigationViewStyle())
}
}
struct Menutest_Previews: PreviewProvider {
static var previews: some View {
Menutest()
.colorScheme(.dark)
.previewDevice("iPad Pro (12.9-inch) (3rd generation)")
}
}
问题:如何正确设置 Zstack 以显示选定的图层?不必使用 ZIndex,可以是 .hide() 修饰符或其他一些逻辑。
【问题讨论】: