https://github.com/tattn/swipetransition
Allows trendy transitions using swipe gesture such as "swipe back anywhere".
https://github.com/tattn/swipetransition
ios objective-c swift swipe swipe-gestures transition trendy-transitions
Last synced: over 1 year ago
JSON representation
Allows trendy transitions using swipe gesture such as "swipe back anywhere".
- Host: GitHub
- URL: https://github.com/tattn/swipetransition
- Owner: tattn
- License: mit
- Created: 2017-12-22T09:59:56.000Z (over 8 years ago)
- Default Branch: main
- Last Pushed: 2024-09-29T07:20:36.000Z (almost 2 years ago)
- Last Synced: 2025-03-22T06:31:46.027Z (over 1 year ago)
- Topics: ios, objective-c, swift, swipe, swipe-gestures, transition, trendy-transitions
- Language: Swift
- Homepage:
- Size: 20.6 MB
- Stars: 310
- Watchers: 10
- Forks: 41
- Open Issues: 16
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README

===
[](https://travis-ci.org/tattn/SwipeTransition)

[](http://cocoapods.org/pods/SwipeTransition)
[](https://developer.apple.com/swift)
[](https://github.com/Carthage/Carthage)
SwipeTransition allows trendy transitions using swipe gesture such as "swipe back".

Try the demo on the web (appetize.io): https://appetize.io/app/pebm8kveqhfj3wn204adn0xu8r
## Features
- [x] Swipe back anywhere.
- [x] Swipe to dismiss anywhere.
- [x] Apply to all view controllers automatically!
- [x] No conflict of gestures on `UIScrollView`, `UITableView`, `UICollectionView` and so on.
# Requirements
- Xcode 15.0
- iOS 14.0+
# Installation
## Swift Package Manager
You can install this package with Swift Package Manager.
## CocoaPods
```ruby
pod "SwipeTransition"
pod "SwipeTransitionAutoSwipeBack" # if needed
pod "SwipeTransitionAutoSwipeToDismiss" # if needed
```
# Usage
## The easiest way to use
Just setting these frameworks in the `Linked Frameworks and Libraries`, it works. (if you use Swift Package Manager)

Notes: these frameworks use Method Swizzling.
If you want to set up manually without Method Swizzling, please use `SwipeTransition` only.
## Manually set up
Notes: if you use `AutoSwipeBack.framework`, these are unnecessary.
Just use `SwipeBackNavigationController` instead of `UINavigationController`. Of course, you can set it with Interface Builder.
```swift
let viewController = UIViewController()
let navigationController = SwipeBackNavigationController(rootViewControlelr: viewController)
````
Another way is to set `swipeBack`.
```swift
class CustomNavigationController: UINavigationController {
override func viewDidLoad() {
super.viewDidLoad()
swipeBack = SwipeBackController(navigationController: self)
}
}
```
Notes: if you use `AutoSwipeToDismiss.framework`, these are unnecessary.
Just use `SwipeToDismissNavigationController` instead of `UINavigationController`. Of course, you can set it with Interface Builder.
```swift
let viewController = UIViewController()
let navigationController = SwipeToDismissNavigationController(rootViewControlelr: viewController)
````
Another way is to set `swipeToDismiss`.
```swift
class CustomNavigationController: UINavigationController {
override func viewDidLoad() {
super.viewDidLoad()
modalPresentationStyle = .fullScreen
swipeToDismiss = SwipeToDismissController(viewController: self)
}
}
```
## Enable/Disable gestures
Use `isEnabled` property.
```swift
self.navigationController?.swipeBack?.isEnabled = false
self.swipeToDismiss?.isEnabled = false
```
## Configuration
You can also change the behavior such as animation.
```swift
SwipeBackConfiguration.shared.parallaxFactor = 0.6
SwipeToDismissConfiguration.shared.dismissHeightRatio = 0.5
```
Inheriting the configure class, you can set it with computed property.
```swift
class CustomSwipeBackConfiguration: SwipeBackConfiguration {
override var transitionDuration: TimeInterval {
get { return 1.5 }
set { super.transitionDuration = newValue }
}
}
SwipeBackConfiguration.shared = CustomSwipeBackConfiguration()
```
## Other usage
See [this wiki](https://github.com/tattn/SwipeTransition/wiki)
# Contributing
1. Fork it!
2. Create your feature branch: `git checkout -b my-new-feature`
3. Commit your changes: `git commit -am 'Add some feature'`
4. Push to the branch: `git push origin my-new-feature`
5. Submit a pull request :D
## Support this project
Donating to help me continue working on this project.
[](https://paypal.me/tattn/)
# ToDo
- [ ] All `.modalPresentationStyle` support
- [ ] Animation support (fade / custom)
- [ ] Some transition styles support (e.g. right to left swipe transition)
# License
SwipeTransition is released under the MIT license. See LICENSE for details.