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. -
ZOZolaZoomTransition
Zoom transition that animates the entire view heirarchy. Used extensively in the Zola iOS application. -
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
WorkOS - The modern identity platform for B2B SaaS
* 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.