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.