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
class ViewController: UIViewController {
weak var presentControllerButton: UIButton?
var transition: JTMaterialTransition?
override func viewDidLoad() {
super.viewDidLoad()
self.transition = JTMaterialTransition(animatedView: self.presentControllerButton)
}
func didPresentControllerButtonTouch () {
let controller = 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.