我有可以拖放到其他视图之上的视图(比如说类别)。为了检测我在哪个类别视图之上,我将它们的帧存储在一个帧数组中,这发生在它们的不可见叠加层的 onAppear 中。(这基于本教程中的 Paul Hudsons 实现)。
这一切都很好,除了当这些视图的位置发生变化时,例如在设备方向或 iPad 上调整窗口大小时。这当然不会触发 onAppear,因此帧不再匹配。
HStack() {
ForEach(categories) { category in
ZStack {
Circle()
Rectangle()
.foregroundColor(.clear)
.overlay(
GeometryReader { geo in
Color.clear
.onAppear {
categoryFrames[index(for: category)] = geo.frame(in: .global)
}
}
)
}
}
}
因此,欢迎任何想法如何更新这些实例中的帧或如何以不同的方式观察它们。