此问题发生在Xcode 11 GM中。
点击视图时,颜色将变为蓝色,并且应更新zIndex使其移到最前面。
在最上面的示例中,此方法工作正常,您将永远不会看到绿色视图与蓝色视图重叠。在下面的示例(使用ForEach)中,它无法正确重绘,并且蓝色视图停留在绿色后面。
虽然奇怪的是,如果您的底部示例处于错误状态,然后触摸顶部的任何视图,则底部会突然纠正自己。
有什么想法或解决方案吗?
struct ContentView: View {
var body: some View {
ZStack {
// First example, working
TestView().position(x: 100, y: 100)
TestView().position(x: 200, y: 200)
// Second example, not working
ForEach(1..<3) { i in
TestView().position(x: 100*CGFloat(i), y: 300 + 100*CGFloat(i))
}
}
}
}
struct TestView: View {
@State var isTapped = false
var body: some View {
return Text("Test Test Test")
.frame(width: 150, height: 150)
.background(isTapped ? Color.blue : Color.green)
.zIndex(isTapped ? 100 : 0)
.gesture(
TapGesture()
.onEnded {
self.isTapped.toggle()
}
)
}
}