暂无描述

NavigationBarInteractivePopDeletegate.swift 1.4KB

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