Skip to content

Instantly share code, notes, and snippets.

View tylerlantern's full-sized avatar

Nattapong Unaregul tylerlantern

View GitHub Profile
class BHMenuInteraction: UIPercentDrivenInteractiveTransition {
var transitionInProgress = false
var shouldCompleteTransition = false
var const : CGFloat = 0
var presentedViewController : UIViewController!
func attachViewController(presentedViewController vc : UIViewController) {
presentedViewController = vc
}
func setUpGestureOnView(view : UIView?){
guard let view = view else {return}
fileprivate let threshold : CGFloat = 300
@objc func handlePanGesture(sender: UIPanGestureRecognizer) {
let view = sender.view!
let viewTranslation = sender.translation(in: view)
switch sender.state {
case .began:
transitionInProgress = true
presentedViewController.dismiss(animated: true, completion: nil)
break
case .changed:
func interactionControllerForDismissal(using animator: UIViewControllerAnimatedTransitioning) -> UIViewControllerInteractiveTransitioning? {
return interactionTransition.transitionInProgress ? interactionTransition : nil
}
func presentationController(forPresented presented: UIViewController, presenting: UIViewController?, source: UIViewController) -> UIPresentationController? {
presentationAnimator = BHMenuPresentation(presentedViewController: presented, presenting: presenting)
interactionTransition.attachViewController(presentedViewController : presented)
interactionTransition.setUpGestureOnView(view: presentationAnimator?.dimmingView)
interactionTransition.setUpGestureOnView(view: presented.view)