Skip to content

You can animate in individual views based on scroll position. Developed with SwiftUI. This library supports iOS/macOS.

License

Notifications You must be signed in to change notification settings

jasudev/Scroller

Repository files navigation

Scroller for SwiftUI

You can animate in individual views based on scroll position. Developed with SwiftUI. This library supports iOS/macOS.

Platforms iOS macOS instagram SPM MIT

Screenshot

Example Vertical Horizontal

Example

https://fabulaapp.page.link/222
https://fabulaapp.page.link/223

Usages

  1. 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)
    }
  2. 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))
        }
    }

Swift Package Manager

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"))
]

Contact

instagram : @dev.fabula
email : [email protected]

License

Scroller is available under the MIT license. See the LICENSE file for more info.

About

You can animate in individual views based on scroll position. Developed with SwiftUI. This library supports iOS/macOS.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages