younger_times
2023-06-09 7828cc52fa4b130cf2ade5b78a5aa2cc8e672d03
WanPai/Base/BaseNav.swift
@@ -9,9 +9,88 @@
import JQTools
class BaseNav: UINavigationController,UINavigationControllerDelegate {
    private var popDelegate: UIGestureRecognizerDelegate?
    private let img = UIImage.jq_gradient([UIColor(hexStr: "#FD8C02"),UIColor(hexStr: "#FD7202")], size: CGSize(width: JQ_ScreenW, height: JQ_NavBarHeight), radius: 0, locations: [0,1], direction: .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.popDelegate = self.interactivePopGestureRecognizer?.delegate
        if #available(iOS 15.0, *) {
            let scrollBar = UINavigationBarAppearance()
            scrollBar.configureWithOpaqueBackground()
            scrollBar.backgroundEffect = nil
            scrollBar.shadowColor = nil
            scrollBar.titleTextAttributes = [.foregroundColor:UIColor.white,.font:Def_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:Def_NavFont]
            standardBar.backgroundColor = UIColor.clear
            standardBar.backgroundImage = img
            navigationBar.scrollEdgeAppearance = scrollBar //顶部透明
            navigationBar.standardAppearance = standardBar
        }else {
            navigationBar.titleTextAttributes = [.foregroundColor:UIColor.white,.font:Def_NavFont]
        }
    }
    open func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
        if navigationController.viewControllers.count == 1{
            navigationBar.standardAppearance.backgroundImage = nil
            navigationBar.scrollEdgeAppearance?.backgroundImage = nil
        }else{
            navigationBar.standardAppearance.backgroundImage = img
            navigationBar.scrollEdgeAppearance?.backgroundImage = img
        }
    }
    //侧滑
    public func navigationController(_ navigationController: UINavigationController, didShow viewController: UIViewController, animated: Bool) {
        if  viewController == self.viewControllers[0] {
            self.interactivePopGestureRecognizer!.delegate = self.popDelegate
        }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
    }
}
class LoginNav: UINavigationController,UINavigationControllerDelegate {
    private var popDelegate: UIGestureRecognizerDelegate?
    open override func viewDidLoad() {
        super.viewDidLoad()
        self.navigationBar.barTintColor = .white
@@ -21,19 +100,21 @@
        self.navigationBar.isTranslucent = true
        self.delegate = self
        self.popDelegate = self.interactivePopGestureRecognizer?.delegate
        if #available(iOS 15.0, *) {
//            let img = UIImage.jq_gradient([UIColor(hexStr: "#FD8C02"),UIColor(hexStr: "#FD7202")], size: CGSize(width: JQ_ScreenW, height: JQ_NavBarHeight), radius: 0, locations: [0,1], direction: .vertical)
            let scrollBar = UINavigationBarAppearance()
            scrollBar.configureWithOpaqueBackground()
            scrollBar.backgroundEffect = nil
            scrollBar.shadowColor = nil
            scrollBar.titleTextAttributes = [.foregroundColor:Def_NavFontColor,.font:Def_NavFont]
            scrollBar.backgroundColor = UIColor.clear
            let img = UIImage.jq_gradient([UIColor.black.withAlphaComponent(0.4),UIColor.clear], size: CGSize(width: JQ_ScreenW, height: JQ_NavBarHeight), radius: 0, locations: [0,1], direction: .vertical)
//            scrollBar.backgroundImage = img
            let standardBar = UINavigationBarAppearance()
            standardBar.configureWithOpaqueBackground()
            standardBar.backgroundEffect = nil
@@ -41,26 +122,22 @@
            standardBar.shadowImage = nil
            standardBar.titleTextAttributes = [.foregroundColor:Def_NavFontColor,.font:Def_NavFont]
            standardBar.backgroundColor = UIColor.clear
            standardBar.backgroundImage = img
//            standardBar.backgroundImage = img
            navigationBar.scrollEdgeAppearance = scrollBar //顶部透明
            navigationBar.standardAppearance = standardBar
        }else {
            navigationBar.titleTextAttributes = [.foregroundColor:Def_NavFontColor,.font:Def_NavFont]
        }
    }
    open override func pushViewController(_ viewController: UIViewController, animated: Bool) {
        viewController.hidesBottomBarWhenPushed = true
        super.pushViewController(viewController, animated: animated)
    }
    open func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
    }
    //侧滑
    public func navigationController(_ navigationController: UINavigationController, didShow viewController: UIViewController, animated: Bool) {
        if  viewController == self.viewControllers[0] {
@@ -69,13 +146,13 @@
            self.interactivePopGestureRecognizer!.delegate = nil
        }
    }
    open override var childForStatusBarHidden: UIViewController? {
        return self.topViewController
    }
    open override var childForStatusBarStyle: UIViewController? {
        return self.topViewController
    }
}