Skip to content

Allows a swipe on any part of the screen to start an interruptible pop animation to the previous view

License

Notifications You must be signed in to change notification settings

joehinkle11/Lazy-Pop-SwiftUI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lazy Pop SwiftUI

Swiping on any part of the screen starts an interruptible pop animation to the previous view.

Forked from https://github.com/rishi420/SwipeRightToPopController and adapted for SwiftUI.

Also thanks to lyinsteve on this Reddit comment for suggesting I turn this into modifier.

App Store Demo

Download the Lazy Pop SwiftUI demo here!

Use

To make your view lazily poppable, just add the lazyPop() modifer to it.

struct DetailsViewWithLazyPop: View {
    var body: some View {
        Text("Lazy pop enabled. Swipe anywhere to dismiss.")
        .lazyPop()
    }
}

If you would like to toggle when the lazy pop is enabled, just pass it a boolean state.

struct DetailsViewWithToggleableLazyPop: View {
    @State var isEnabled: Bool = true
    var body: some View {
        Toggle(isOn: $isEnabled) {
            Text("Toggle lazy pop")
        }
        .lazyPop(isEnabled: $isEnabled)
    }
}

Gotchas

The current implementation does not play well with some SwiftUI modifiers like .ignoresSafeArea(). There is currently no known workaround. If you find anything related to this problem, you can write about it in this issue.

Install

Just inlude the two files under LazyPop in this repo. Here's a link to them https://github.com/joehinkle11/Lazy-Pop-SwiftUI/tree/master/Lazy%20Pop%20SwiftUI/Lazy%20Pop

If this gets enough use, I'll put this in a Swift Package or a Cocopod.

About

Allows a swipe on any part of the screen to start an interruptible pop animation to the previous view

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages