swift - SwiftUI zIndex 没有在 ForEach 内正确更新
问题描述
此问题发生在 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()
}
)
}
}
解决方案
推荐阅读
- c# - 即使触发了 MenuStripItem 快捷方式,也会引发 KeyDown 事件
- python - Spark 集群上的 Keras/Tensorflow GridSearchCV
- sql - Microsoft SQL Server 中年份和季度的聚合函数
- r - 自动检测短语的开始和结束行数
- javascript - Firefox 的 Math.round 或 Date 是否不同?
- javascript - 当我有五个具有相同选项和值的选择时,如何从另一个选择标签中删除选定的选项?
- google-tag-manager - 我可以在多个标签中拆分 Google Tag Manager 促销视图吗
- javascript - 如何检查环境是否支持扩展构建,如 Array
- python - tkinter:在父级中显示的顶层框架
- python - 将工作 Python 脚本转换为 EXE (Python) 后出错