|
//
// NavigationBarInteractivePopDeletegate.swift
// PaiaiUIKit
//
// Created by ffib on 2019/1/15.
// Copyright © 2019 yb. All rights reserved.
//
import Foundation
public protocol NavigationBarInteractivePopDeletegate: class {
func setupNavigationBarInteractivePopDelegate()
}
public extension NavigationBarInteractivePopDeletegate where Self: UIViewController & NavigationBarInOut {
func setupNavigationBarInteractivePopDelegate() {
guard let nav = navigationController else { return }
nav.interactivePopGestureRecognizer?.addTarget(self, action: #selector(interactivePopAnimation(gesture:)))
}
}
extension UIViewController {
@objc func interactivePopAnimation(gesture: UIPanGestureRecognizer) {
let point = gesture.translation(in: view)
let percentage = calculatePercentageOfOffsets(point: point)
(self as? NavigationBarInOut)?.navigationBarFadeOutWithPercentage(percentage)
switch gesture.state {
case .ended:
if percentage > 0.5 {
(self as? NavigationBarInOut)?.navigationBarFadeOut()
} else {
(self as? NavigationBarInOut)?.navigationBarFadeIn()
}
default:
return
}
}
func calculatePercentageOfOffsets(point: CGPoint) -> CGFloat {
return point.x / view.bounds.width
}
}
|