D2PCurvedModal
Example
To run the example project, clone the repo, and run pod install
from the Example directory first.
The Example project use the modal as a Color/Size Picker.
Installation
D2PCurvedModal is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'D2PCurvedModal'
How to Use?
- First install the Pod and import the module
D2PCurvedModal
to your file
import D2PCurvedModal
- Instantiate
D2PCurvedModalTransition
andD2PCurvedModalPercentDrivenTransition
inside the your presentingViewController
let percentDrivenTransition = D2PCurvedModalPercentDrivenTransition()
let transition = D2PCurvedModalTransition()
- For the purpose of the transition animation your presenting
ViewController
must conform theUIViewControllerTransitioningDelegate
protocol, with these appropriate methods
extension ViewController: UIViewControllerTransitioningDelegate {
func animationController(forPresented presented: UIViewController, presenting: UIViewController, source: UIViewController) -> UIViewControllerAnimatedTransitioning? {
if presented is D2PCurvedModal {
transition.opening = true
return transition
}
return nil
}
func animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? {
if dismissed is D2PCurvedModal {
transition.opening = false
return transition
}
return nil
}
func interactionControllerForDismissal(using animator: UIViewControllerAnimatedTransitioning) -> UIViewControllerInteractiveTransitioning? {
return percentDrivenTransition.transitionInProgress ? percentDrivenTransition : nil
}
}
- Inside the action method (to open the modal) instantiate the view controllers that will appear embedded into the D2PCurvedModal and instantiate
D2PCurvedModal
, to finally use the methodsetUpViewOf(viewController:)
ofD2PCurvedModal
@IBAction func openModal(_ sender: Any) {
let myCustomVC = MyCustomVC(nibName: "MyCustomVC", bundle: Bundle(for: MyCustomVC.self))
let modalVC = D2PCurvedModal(nibName: "D2PCurvedModal", bundle: Bundle(for: D2PCurvedModal.self))
modalVC.setUpViewOf(viewController: myCustomVC)
modalVC.containerHeight = 200
modalVC.transitioningDelegate = self
percentDrivenTransition.attachToViewController(viewController: modalVC)
present(modalVC, animated: true, completion: nil)
}
That's it! You're all set!!
Documentation
All of the methods and properties available for D2PCurvedModal are documented below.
Change the modal container height
containerHeight
Property (CGFloat) (Default: 300)
The Use the containerHeight
property of D2PCurvedModal
to change the height of the container view.
Example usage:
modalVC.containerHeight = 200
Change the modal background color
bgColor
Property (UIColor) (Default: .white)
The Use the bgColor
property of D2PCurvedModal
to change the background color of the modal view.
Example usage:
modalVC.bgColor = .orange
Change the modal title
modalTitle
Property (String) (Default: "")
The Use the modalTitle
property of D2PCurvedModal
to change the title of the modal.
Example usage:
modalVC.modalTitle = "Filter"
Change the modal title color
modalTitleColor
Property (UIColor) (Default: .lightGray)
The Use the modalTitleColor
property of D2PCurvedModal
to change the title text color.
Change the close button background color
closeBtnBgColor
Property (UIColor) (Default: #FD4741)
The Use the closeBtnBgColor
property of D2PCurvedModal
to change the background color of the modal close button.
Change the close button tint color
closeBtnTintColor
Property (UIColor) (Default: .white)
The Use the closeBtnTintColor
property of D2PCurvedModal
to change the tint color of the modal close button.
Access the container view controller
containerVC
Property (UIViewController)
The Use the containerVC
property of D2PCurvedModal
to access the view controller of the view that is embedded into the D2PCurvedModal
.
Manually close the modal view
close(animated: Bool, completion: (() -> Void)?)
method
The Use the close
method of D2PCurvedModal
to manually close the modal.
Delegate
D2PCurvedModal uses a delegate to receive modal change events. The delegate object must conform to the D2PCurvedModalDelegate
protocol, which is composed of the method:
-
modalWillOpen(modalVC: D2PCurvedModal)
Tells the delegate that the view of the specified modal view controller is about to be displayed. -
modalWillClose(modalVC: D2PCurvedModal)
Tells the delegate that the view of the specified modal view controller is about to be removed.
Requirements
No Requirement
Author
Credits
Credits to Johny Vino for the UI Design inspiration. FlatIcon for the icons.
License
D2PCurvedModal is available under the MIT license. See the LICENSE file for more info.