У меня есть представление, которое можно перетаскивать поверх других представлений (скажем, категорий). Чтобы определить, в каком представлении категории я нахожусь, я сохраняю их фреймы в массиве фреймов, что происходит в onAppear их невидимых оверлеев. (Это основано на реализации Пола Хадсона в этом учебнике.) на 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)
}
}
)
}
}
}
Поэтому любая идея, как обновить кадры в этих экземплярах или как по-другому их наблюдать, будет приветствоваться.