An iOS transition for controllers based on material design.
With CocoaPods, add this line to your Podfile.
pod 'JTMaterialTransition', '~> 2.0'
import UIKit
import JTMaterialTransition
classViewController:UIViewController{
weak varpresentControllerButton:UIButton?vartransition:JTMaterialTransition?overridefunc viewDidLoad(){
super.viewDidLoad()self.transition =JTMaterialTransition(animatedView:self.presentControllerButton)}func didPresentControllerButtonTouch (){letcontroller=SecondViewController()
controller.modalPresentationStyle =.custom
controller.transitioningDelegate =self.transition
self.present(controller, animated:true, completion:nil)}}The animatedView is not directly used, a new view is created based on the frame, backgroundColor properties for the animation.
If you don't want to provide a view, you have to set startFrame and startBackgroundColor properties and call init instead of initWithAnimatedView:.
startFrame must be the coordinates relative to the window:
var startFrame = animatedView.superview?.convert(animatedView.frame, to: nil)
The controller presented must have a backgroundColor else the effect can be a little strange. If you use a UINavigationController or another container don't forget to set the backgroundColor with controllerPresented.view.backgroundColor = UIColor.yourColor.
- iOS 8.0 or higher
- Swift 4.2
JTMaterialTransition is released under the MIT license. See the LICENSE file for more info.
