ElasticTransition alternatives and similar libraries
Based on the "Transition" category.
Alternatively, view ElasticTransition alternatives based on common mentions on social networks and blogs.
-
TLYShyNavBar
Unlike all those arrogant UINavigationBar, this one is shy and humble! Easily create auto-scrolling navigation bars! -
StarWars.iOS
This component implements transition animation to crumble view-controller into tiny pieces. -
BubbleTransition
A custom modal transition that presents and dismiss a controller with an expanding bubble effect. -
SPStorkController
Now playing controller from Apple Music, Mail & Podcasts Apple's apps. -
Transition
Easy interactive interruptible custom ViewController transitions -
PinterestSwift
This is a Swift based demo project to show how to make the transition Pinterest liked. -
EasyTransitions
A simple way to create custom interactive UIViewController transitions -
RevealingSplashView
A Splash view that animates and reveals its content, inspired by Twitter splash -
SPLarkController
Custom transition between controllers. Settings controller for your iOS app. -
ImageOpenTransition
Beautiful and precise transitions between ViewControllers images written in Swift. -
MusicPlayerTransition
Custom interactive transition like Apple Music iOS App (iOS 9). written in Swift. -
NavigationTransitions
Pure SwiftUI Navigation transitions ✨ -
LiquidSwipe
Example of using SwiftUI to create a beautiful Liquid Swipe control -
AudioIndicatorBars
AIB indicates for your app users which audio is playing. Just like the Podcasts app. -
SamuraiTransition
SamuraiTransition is an open source Swift based library providing a collection of ViewController transitions featuring a number of neat “cutting” animations. -
TransitionManager
Painless custom transitioning. Easy extend, easy setup, just focus on animations. -
ImageTransition
Library for smooth animation of images during transitions. -
PanSlip
Use PanGesture to dismiss view on UIViewController and UIView -
MagicKit
An Advanced and Flexible Framework for Building Engaging Transitions.
Appwrite - The open-source backend cloud platform
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of ElasticTransition or a related project?
README
ElasticTransition (Swift 3)
A UIKit custom modal transition that simulates an elastic drag. Written in Swift.
Thanks to Matt Garnett (@c-o-l-o-r) for converting ElasticTransition to Swift 3
Also, special thanks to @taglia3 for developing the Objective-C version. Check it out!
Requirements
- Xcode 8 or higher
- iOS 8.0 or higher
- Swift 3.0
Installation
CocoaPods
use_frameworks!
pod "ElasticTransition"
Usage
Simple
import ElasticTransition
// make your view controller a subclass of ElasticModalViewController
// present it as normal
class YourModalViewController:ElasticModalViewController{
// ...
}
class RootViewController:UIViewController{
// ...
@IBAction func modalBtnTouched(sender: AnyObject) {
performSegueWithIdentifier("modalSegueIdentifier", sender: self)
// or if you want to do customization ---------------------
let modalViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("modalViewControllerIdentifier") as! YourModalViewController
// customization:
modalViewController.modalTransition.edge = .Left
modalViewController.modalTransition.radiusFactor = 0.3
// ...
presentViewController(modalViewController, animated: true, completion: nil)
}
}
Attributes you can set:
// screen edge of the transition
public var edge:Edge
// animation stiffness - determines the speed of the animation
public var stiffness:CGFloat = 0.2
// animation damping - determines the bounciness of the animation
public var damping:CGFloat = 0.2
// Background view transform
public var transformType:ElasticTransitionBackgroundTransform = .TranslateMid
// The curvature of the elastic edge.
public var radiusFactor:CGFloat = 0.5
/**
Determines whether or not the view edge will stick to
the initial position when dragged.
**Only effective when doing a interactive transition**
*/
public var sticky:Bool = true
/**
The initial position of the simulated drag when static animation is performed
i.e. The static animation will behave like user is dragging from this point
**Only effective when doing a static transition**
*/
public var startingPoint:CGPoint?
/**
The background color of the container when doing the transition
*/
public var containerColor:UIColor = UIColor(red: 152/255, green: 174/255, blue: 196/255, alpha: 1.0)
/**
The color of the overlay when doing the transition
*/
public var overlayColor:UIColor = UIColor(red: 152/255, green: 174/255, blue: 196/255, alpha: 0.5)
/**
Whether or not to display the shadow. Will decrease performance.
*/
public var showShadow:Bool = false
/**
The shadow color of the container when doing the transition
*/
public var shadowColor:UIColor = UIColor(red: 100/255, green: 122/255, blue: 144/255, alpha: 1.0)
/**
The shadow radius of the container when doing the transition
*/
public var shadowRadius:CGFloat = 50
Advance Usage
This work with any view controller.
In prepareForSegue, assign the transition to be the transitioningDelegate of the destinationViewController. Also, dont forget to set the modalPresentationStyle to .Custom
var transition = ElasticTransition()
override func viewDidLoad() {
super.viewDidLoad()
// customization
transition.edge = .Left
transition.sticky = false
// etc
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
segue.destinationViewController.transitioningDelegate = transition
segue.destinationViewController.modalPresentationStyle = .Custom
}
(Optional) In your modal view controller implement the ElasticMenuTransitionDelegate and provide the contentLength
class MenuViewController: UIViewController, ElasticMenuTransitionDelegate {
var contentLength:CGFloat = 320
// ...
}
Interactive transition for modal transition
First, construct a pan gesture recognizer
let panGR = UIPanGestureRecognizer(target: self, action: "handlePan:")
view.addGestureRecognizer(panGR)
Then implement your gesture handler and fo the following:
func handlePan(pan:UIPanGestureRecognizer){
if pan.state == .Began{
// Here, you can do one of two things
// 1. show a viewcontroller directly
let nextViewController = // construct your VC ...
transition.startInteractiveTransition(self, toViewController: nextViewController, gestureRecognizer: pan)
// 2. perform a segue
transition.startInteractiveTransition(self, segueIdentifier: "menu", gestureRecognizer: pan)
}else{
transition.updateInteractiveTransition(gestureRecognizer: pan)
}
}
Interactive transition for dismissing the modal
- Implement ElasticMenuTransitionDelegate in your modal view controller and set
var dismissByBackgroundTouch = true
var dismissByBackgroundDrag = true
var dismissByForegroundDrag = true
- Or use your own panGestureRecognizer and call dissmissInteractiveTransition in your handler
swift func handlePan(pan:UIPanGestureRecognizer){ if pan.state == .Began{ transition.dissmissInteractiveTransition(self, gestureRecognizer: pan, completion: nil) }else{ transition.updateInteractiveTransition(gestureRecognizer: pan) } }
Author
Luke Zhao, [email protected]
License
ElasticTransition is available under the MIT license. See the LICENSE file for more info.
*Note that all licence references and agreements mentioned in the ElasticTransition README section above
are relevant to that project's source code only.