You can animate in individual views based on scroll position. Developed with SwiftUI. This library supports iOS/macOS.
Example | Vertical | Horizontal |
---|---|---|
https://fabulaapp.page.link/222
https://fabulaapp.page.link/223
Scroller
Scroller(.vertical, value: $valueV) {
ForEach(0...5, id: \.self) { index in
GeometryReader { proxy in
ScrollerVContent(value: proxy.scrollerValue(.vertical))
}
}
} lastContent: {
Rectangle()
.fill(Color.blue)
.overlay(Text("LastView"))
.foregroundColor(Color.white)
}
Each view only needs to conform to the ScrollerContent protocol.
struct ScrollerVContent: ScrollerContent {
/// Bind each view's scroll-relative value. It is a value between 0 and 1.
var value: CGFloat = 0
var body: some View {
GeometryReader { proxy in
ScrollerInfoView(axes: .vertical, value: value, proxy: proxy)
.offset(y: proxy.size.height * value)
.padding(10)
Rectangle().fill(Color.blue)
.frame(width: proxy.size.width * value, height: 5)
.offset(y: proxy.size.height * value)
}
.background(Color.orange.opacity(1.0 - value))
}
}
The Swift Package Manager is a tool for automating the distribution of Swift code and is integrated into the swift compiler. Once you have your Swift package set up, adding Scroller as a dependency is as easy as adding it to the dependencies value of your Package.swift.
dependencies: [
.package(url: "https://github.com/jasudev/Scroller.git", .branch("main"))
]
instagram : @dev.fabula
email : [email protected]
Scroller is available under the MIT license. See the LICENSE file for more info.
link |
Stars: 39 |
Last commit: 1 year ago |
Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics