diff options
Diffstat (limited to 'Jel/Views/Utility/StickyHeaderView.swift')
-rw-r--r-- | Jel/Views/Utility/StickyHeaderView.swift | 38 |
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") + } +} |