aboutsummaryrefslogtreecommitdiff
path: root/Hotline/Utility/ObservableScrollView.swift
diff options
context:
space:
mode:
authorRuben Beltran del Rio <git@r.bdr.sh>2025-11-27 23:38:04 +0100
committerRuben Beltran del Rio <git@r.bdr.sh>2025-11-27 23:38:04 +0100
commit213710bf5bd6413c747bf126db50816ef5de5a6e (patch)
tree912f8cf87955a08077c92fea8ad934f50b7ab975 /Hotline/Utility/ObservableScrollView.swift
parentf466b21dc02f78c984ba6748e703f6780a7a0db4 (diff)
parent6a95b53616a4abfa306ddce43151cf4fefbd20ed (diff)
Merge remote-tracking branch 'upstream/main'
Diffstat (limited to 'Hotline/Utility/ObservableScrollView.swift')
-rw-r--r--Hotline/Utility/ObservableScrollView.swift42
1 files changed, 0 insertions, 42 deletions
diff --git a/Hotline/Utility/ObservableScrollView.swift b/Hotline/Utility/ObservableScrollView.swift
deleted file mode 100644
index 05688f1..0000000
--- a/Hotline/Utility/ObservableScrollView.swift
+++ /dev/null
@@ -1,42 +0,0 @@
-import SwiftUI
-
-struct ScrollViewOffsetPreferenceKey: PreferenceKey {
- typealias Value = CGFloat
- static var defaultValue = CGFloat.zero
- static func reduce(value: inout Value, nextValue: () -> Value) {
- value += nextValue()
- }
-}
-
-struct ObservableScrollView<Content>: View where Content: View {
- @Namespace var scrollSpace
- @Binding var scrollOffset: CGFloat
- let content: () -> Content
-
- init(
- scrollOffset: Binding<CGFloat>,
- @ViewBuilder content: @escaping () -> Content
- ) {
- _scrollOffset = scrollOffset
- self.content = content
- }
-
- var body: some View {
- ScrollView {
- content()
- .background(
- GeometryReader { geo in
- let offset = -geo.frame(in: .named(scrollSpace)).minY
- Color.clear
- .preference(
- key: ScrollViewOffsetPreferenceKey.self,
- value: offset)
- })
-
- }
- .coordinateSpace(name: scrollSpace)
- .onPreferenceChange(ScrollViewOffsetPreferenceKey.self) { value in
- scrollOffset = value
- }
- }
-}