Get the current scroll position of a SwiftUI ScrollView
It was possible to read it and before. Here is a solution based on view preferences.
struct DemoScrollViewOffsetView: View { @State private var offset = CGFloat.zero var body: some View { ScrollView { VStack { ForEach(0..<100) { i in Text("Item \(i)").padding() } }.background(GeometryReader { Color.clear.preference(key: ViewOffsetKey.self, value: -$0.frame(in: .named("scroll")).origin.y) }) .onPreferenceChange(ViewOffsetKey.self) { print("offset >> \($0)") } }.coordinateSpace(name: "scroll") }}struct ViewOffsetKey: PreferenceKey { typealias Value = CGFloat static var defaultValue = CGFloat.zero static func reduce(value: inout Value, nextValue: () -> Value) { value += nextValue() }}