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