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