| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 | 
              - 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
 -     }
 - }
 
 
  |