ScrollViewWithScrollOffset

带有内容偏移量的 SwiftUI ScrollView。

特性

安装

Swift Package Manager

https://github.com/Jnis/ScrollViewWithScrollOffset.git

使用

  1. 使用
import ScrollViewWithScrollOffset

@State var scrollOffset: CGFloat = 0 // 1

ScrollViewWithScrollOffset(scrollOffset: $scrollOffset, content: { // 2
   // your view ...
})
  1. 图片示例 (gif 示例)
import ScrollViewWithScrollOffset

struct ContentView: View {
    @State var scrollOffset: CGFloat = 0
    
    var body: some View {
        ScrollViewWithScrollOffset(scrollOffset: $scrollOffset, content: {
            VStack {
                image
                Color.gray.frame(height: 1000)
            }
        })
    }
    
    var image: some View {
        GeometryReader { proxy in
            Image(systemName: "heart.fill")
                .resizable()
                .aspectRatio(contentMode: .fit)
                .padding(.horizontal, min(0, -scrollOffset))
                .frame(width: proxy.size.width,
                       height: proxy.size.height + max(0, scrollOffset))
                .offset(CGSize(width: 0, height: min(0, -scrollOffset)))
        }
        .aspectRatio(CGSize(width: 375, height: 280), contentMode: .fit)
    }
}

你可以在 /Examples 文件夹中找到更多示例。

许可协议

MIT