Presenter alternatives and similar libraries
Based on the "Modal Transition" category.
Alternatively, view Presenter alternatives based on common mentions on social networks and blogs.
-
BubbleTransition
A custom modal transition that presents and dismiss a controller with an expanding bubble effect. -
Presentr
Swift wrapper for custom ViewController presentations on iOS -
ZFDragableModalTransition
Custom animation transition for present modal view controller -
ElasticTransition
A UIKit custom transition that simulates an elastic drag. Written in Swift. -
RMPZoomTransitionAnimator
A custom zooming transition animation for UIViewController -
ZOZolaZoomTransition
Zoom transition that animates the entire view heirarchy. Used extensively in the Zola iOS application. -
JTMaterialTransition
An iOS transition for controllers based on material design. -
BlurryModalSegue
A custom modal segue providing a blurred overlay effect. -
View2ViewTransition
Custom interactive view controller transition from one view to another view. -
ImageOpenTransition
Beautiful and precise transitions between ViewControllers images written in Swift. -
DAExpandAnimation
A custom modal transition that presents a controller with an expanding effect while sliding out the presenter remnants. -
ElasticTransition-ObjC
A UIKit custom transition that simulates an elastic drag.This is the Objective-C Version of Elastic Transition written in Swift by lkzhao -
AZTransitions
API to make great custom transitions in one method -
RPModalGestureTransition
You can dismiss modal by using gesture :point_up_2: :iphone:
Appwrite - The Open Source Firebase alternative introduces iOS support
* 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 Presenter or a related project?
README
Presenter
Screen transition with safe and clean code.
With Presenter, you can…
- Assure that the ViewController's requirements are met, such as a ViewModel to be injected.
- Constrain transition types (push or present modal or both)
This library is recommended to be used together with Instantiatable.
Usage
Clean Screen Transition
MyViewController.Presenter(userID: "muukii").push(self.navigationController)
MyViewController.Presenter(userID: "muukii").present(self)
Advanced
MyViewController.Presenter(userID: "muukii").push(self.navigationController) { (transaction: PushTransaction<MyViewController> in
// Pop
transaction.pop()
// Get
transaction.viewController
}
MyViewController.Presenter(userID: "muukii").present(self) { (transaction: ModalTransaction<MyViewController>) in
// Pop
transaction.dismiss()
// Get
transaction.viewController
}
Create Presenter
Push
extension MyViewController {
final class Presenter: PushPresenter {
let userID: String
init(userID: String) {
self.userID = userID
}
func createViewController() -> MyViewController {
let controller = MessagesViewController() // Init from Stroyboard or XIB
controller.userID = userID
return controller
}
// Optional:
public func willPush(viewController: MyViewController) {
}
public func didPush(viewController: MyViewController) {
}
}
}
Present
extension MyViewController {
final class Presenter: ModalPresenter {
let userID: String
init(userID: String) {
self.userID = userID
}
func parentController(viewController: UIViewController) -> UIViewController? {
return UINavigationController(rootViewController: viewController)
}
func createViewController() -> MyViewController {
let controller = MessagesViewController() // Init from Stroyboard or XIB
controller.userID = userID
return controller
}
// Optional
public func willPresent(viewController: MyViewController) {
}
public func didPresent(viewController: MyViewController) {
}
}
}
Present or Push
extension MyViewController {
final class Presenter: PushPresenter, ModalPresenter {
let userID: String
init(userID: String) {
self.userID = userID
}
func parentController(viewController: UIViewController) -> UIViewController? {
// Call Present() only
return UINavigationController(rootViewController: viewController)
}
func createViewController() -> MyViewController {
let controller = MessagesViewController() // Init from Stroyboard or XIB
controller.userID = userID
return controller
}
// Optional
public func willPresent(viewController: MyViewController) {
}
public func didPresent(viewController: MyViewController) {
}
public func willPush(viewController: MyViewController) {
}
public func didPush(viewController: MyViewController) {
}
}
}
Requirements
Installation
Presenter is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod "Presenter"
Author
muukii, [email protected]
License
Presenter is available under the MIT license. See the LICENSE file for more info.
*Note that all licence references and agreements mentioned in the Presenter README section above
are relevant to that project's source code only.