暫無描述

NavigationBarPushAndPopDelegate.swift 1.8KB

    // // NavigationBarPushAndPopDelegate.swift // PaiaiUIKit // // Created by ffib on 2019/1/16. // Copyright © 2019 yb. All rights reserved. // import Foundation public protocol NavigationBarPushAndPopDelegate: class { func setupNavigationBarPushAndPopDelegate() func setNavigationBar() } public extension NavigationBarPushAndPopDelegate where Self: UIViewController & NavigationControllerDelegate { func setupNavigationBarPushAndPopDelegate() { navigationController?.setDelegate(self) } func setNavigationBar() {} } public extension NavigationControllerDelegate where Self: UIViewController { func navigationController(_ navigationController: UINavigationController, animationControllerFor operation: UINavigationController.Operation, from fromVC: UIViewController, to toVC: UIViewController) -> UIViewControllerAnimatedTransitioning? { if operation == .push { (toVC as? NavigationBarInOutAnimator)?.navigationBarFadeAndMoveIn() (fromVC as? NavigationBarInOutAnimator)?.navigationBarFadeOut() } else { (toVC as? NavigationBarInOutAnimator)?.navigationBarFadeIn() (fromVC as? NavigationBarInOutAnimator)?.navigationBarFadeAndMoveOut() } return nil } func navigationController(_ navigationController: UINavigationController, didShow viewController: UIViewController, animated: Bool) { guard let recognizer = navigationController.interactivePopGestureRecognizer else { return } recognizer.isEnabled = true guard let vc = viewController as? GestureRecognizerDelegate else { return } recognizer.setDelegate(vc) } }