Вот упрощенный код:
Код: Выделить всё
import SwiftUI
struct ContactScreenView: View {
let text: String
var body: some View {
ZStack {
Color.red.opacity(0.4).ignoresSafeArea()
VStack {
Image(systemName: "globe")
.imageScale(.large)
.foregroundStyle(.tint)
Text(text)
}
.padding()
}
}
}
struct DemoView: View {
@State private var selectedTab: Int = 0
var body: some View {
VStack {
TabView(selection: $selectedTab) {
ContactScreenView(text: "followers")
.background(
GeometryReader(content: { geometry -> Color in
let minX = geometry.frame(in: .global).minX
print(minX)
return Color.clear
})
)
.tag(0)
ContactScreenView(text: "following")
.tag(1)
ContactScreenView(text: "blocked")
.tag(2)
ContactScreenView(text: "Shared")
.tag(3)
}
.tabViewStyle(.page(indexDisplayMode: .never))
}
}
}
#Preview {
DemoView()
}
- Когда я прокручиваю вторую страницу (индекс 1), значение minX корректно обновляется до screenWidth * 1, как и ожидалось.
- Когда я прокручиваю третью страницу (индекс 2), значение minX не обновляется. вообще обновить.
- Идеальным поведением для minX было бы обновление до screenWidth * 2 для третьей страницы и так далее для последующих страниц.
< /ol>
Ожидаемое поведение: - Значение minX должно правильно отражать глобальное положение каждой страницы при прокрутке TabView. Например:
- Страница 0: minX = 0
- Страница 1: minX = screenWidth * 1
- Страница 2: minX = screenWidth * 2
- И так далее.
Подробнее здесь: https://stackoverflow.com/questions/793 ... page-scrol