//
|
// BaseNavigationController.swift
|
// BrokerDriver
|
//
|
// Created by 无故事王国 on 2023/4/24.
|
//
|
|
import UIKit
|
import JQTools
|
|
class BaseNav: UINavigationController,UINavigationControllerDelegate {
|
|
/// 需要透明Nav的VC
|
private var lucencyVCs = [HomeVC.self,LoginVC.self,CommonWebVC.self]
|
|
private let img = UIImage.jq_gradient(["#B6E0FF","#FFFFFF"],size: CGSize(width: JQ_ScreenW, height: 90),direction: GradientDirection.vertical)
|
|
open override func viewDidLoad() {
|
super.viewDidLoad()
|
self.navigationBar.barTintColor = .white
|
self.navigationBar.titleTextAttributes = [.font:UIFont.systemFont(ofSize: 18, weight: .medium), .foregroundColor:UIColor.white]
|
self.navigationBar.tintColor = UIColor.black
|
self.navigationBar.shadowImage = UIImage()
|
self.navigationBar.isTranslucent = true
|
self.delegate = self
|
self.interactivePopGestureRecognizer?.delegate = self
|
|
|
if #available(iOS 15.0, *) {
|
let scrollBar = UINavigationBarAppearance()
|
scrollBar.configureWithOpaqueBackground()
|
scrollBar.backgroundEffect = nil
|
scrollBar.shadowColor = nil
|
scrollBar.titleTextAttributes = [.foregroundColor:UIColor.white,.font:Config.NavFont]
|
scrollBar.backgroundColor = UIColor.clear
|
scrollBar.backgroundImage = img
|
|
let standardBar = UINavigationBarAppearance()
|
standardBar.configureWithOpaqueBackground()
|
standardBar.backgroundEffect = nil
|
standardBar.shadowColor = nil
|
standardBar.shadowImage = nil
|
standardBar.titleTextAttributes = [.foregroundColor:UIColor.white,.font:Config.NavFont]
|
standardBar.backgroundColor = UIColor.clear
|
standardBar.backgroundImage = img
|
navigationBar.scrollEdgeAppearance = scrollBar //顶部透明
|
navigationBar.standardAppearance = standardBar
|
}else {
|
navigationBar.titleTextAttributes = [.foregroundColor:UIColor.white,.font:Config.NavFont]
|
navigationBar.isTranslucent = true
|
navigationBar.setBackgroundImage(UIImage(), for: .default)
|
navigationBar.shadowImage = UIImage()
|
}
|
}
|
|
open func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
|
|
|
let status = lucencyVCs.contains(where: {$0 == viewController.classForCoder})
|
if (status){
|
if #available(iOS 15.0, *) {
|
navigationBar.standardAppearance.backgroundImage = nil
|
navigationBar.scrollEdgeAppearance?.backgroundImage = nil
|
}else{
|
navigationBar.setBackgroundImage(UIImage(), for: .default)
|
navigationBar.shadowImage = UIImage()
|
}
|
}else{
|
if #available(iOS 15.0, *) {
|
navigationBar.standardAppearance.backgroundImage = img
|
navigationBar.scrollEdgeAppearance?.backgroundImage = img
|
}else{
|
navigationBar.setBackgroundImage(img, for: .default)
|
}
|
}
|
}
|
|
//侧滑
|
public func navigationController(_ navigationController: UINavigationController, didShow viewController: UIViewController, animated: Bool) {
|
if viewController == self.viewControllers[0] {
|
self.interactivePopGestureRecognizer!.delegate = self
|
}else{
|
self.interactivePopGestureRecognizer!.delegate = nil
|
}
|
}
|
|
open override var childForStatusBarHidden: UIViewController? {
|
return self.topViewController
|
}
|
|
open override var childForStatusBarStyle: UIViewController? {
|
return self.topViewController
|
}
|
|
override var preferredStatusBarStyle: UIStatusBarStyle{
|
return .lightContent
|
}
|
}
|