SwiftUI zIndex在ForEach内部未正确更新
此问题发生在Xcode 11 GM中 点击视图时,颜色将变为蓝色,应更新zIndex以将其移动到前面 在上面的示例中,这很好,您永远不会看到绿色视图与蓝色视图重叠。在下面的示例中(使用ForEach),它没有正确地重新绘制,蓝色视图保留在绿色视图后面 尽管奇怪的是,如果底部示例处于不好的状态,然后触摸顶部的任何视图,那么底部会突然自我纠正 有什么想法或解决办法吗SwiftUI zIndex在ForEach内部未正确更新,swift,foreach,swiftui,xcode11,Swift,Foreach,Swiftui,Xcode11,此问题发生在Xcode 11 GM中 点击视图时,颜色将变为蓝色,应更新zIndex以将其移动到前面 在上面的示例中,这很好,您永远不会看到绿色视图与蓝色视图重叠。在下面的示例中(使用ForEach),它没有正确地重新绘制,蓝色视图保留在绿色视图后面 尽管奇怪的是,如果底部示例处于不好的状态,然后触摸顶部的任何视图,那么底部会突然自我纠正 有什么想法或解决办法吗 struct ContentView: View { var body: some View { ZSta
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()
}
)
}
}
struct ContentView:View{
var body:一些观点{
ZStack{
//第一个例子,工作
TestView().位置(x:100,y:100)
TestView().位置(x:200,y:200)
//第二个例子,不起作用
弗雷奇(1..ForEach中的zIndex正在更新,但似乎该更改被ForEach阻止。更新前2个时,堆栈会立即看到更改并重新绘制整个视图。您可能可以通过从ContentView传递一个导致更新的绑定来解决此问题。我也有同样的问题。@MichaelSalmon怎么办你的意思是完全正确的?ForEach中的zIndex正在更新,但似乎ForEach正在阻止更改。当前两个更新时,堆栈立即看到更改并重新绘制整个视图。你可能可以通过从ContentView传递一个绑定来解决此问题,从而导致更新。我也有同样的问题。@Michael鲑鱼你到底是什么意思?