summaryrefslogtreecommitdiff
path: root/Jel/Views/Utility
diff options
context:
space:
mode:
Diffstat (limited to 'Jel/Views/Utility')
-rw-r--r--Jel/Views/Utility/StickyHeaderView.swift38
1 files changed, 38 insertions, 0 deletions
diff --git a/Jel/Views/Utility/StickyHeaderView.swift b/Jel/Views/Utility/StickyHeaderView.swift
new file mode 100644
index 0000000..52dc26d
--- /dev/null
+++ b/Jel/Views/Utility/StickyHeaderView.swift
@@ -0,0 +1,38 @@
+//
+// StickyHeaderView.swift
+// Jel
+//
+// Created by zerocool on 12/24/23.
+//
+
+import SwiftUI
+
+struct StickyHeaderView<Content: View>: View {
+
+ var minHeight: CGFloat
+ var content: Content
+
+ init(minHeight: CGFloat = 200, @ViewBuilder content: () -> Content) {
+ self.minHeight = minHeight
+ self.content = content()
+ }
+
+ var body: some View {
+ GeometryReader { geo in
+ if(geo.frame(in: .global).minY <= 0) {
+ content
+ .frame(width: geo.size.width, height: geo.size.height, alignment: .center)
+ } else {
+ content
+ .offset(y: -geo.frame(in: .global).minY)
+ .frame(width: geo.size.width, height: geo.size.height + geo.frame(in: .global).minY)
+ }
+ }.frame(minHeight: minHeight)
+ }
+}
+
+#Preview {
+ StickyHeaderView {
+ Text("Test")
+ }
+}