带有内容偏移量的 SwiftUI ScrollView。
![]() |
contentOffset
的最简单方法Swift Package Manager
https://github.com/Jnis/ScrollViewWithScrollOffset.git
import ScrollViewWithScrollOffset
@State var scrollOffset: CGFloat = 0 // 1
ScrollViewWithScrollOffset(scrollOffset: $scrollOffset, content: { // 2
// your view ...
})
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