// // RootNavigationController.swift // SolarStationSwift // // Created by weclouds on 2018/8/8. // Copyright © 2018年 weclouds. All rights reserved. // import UIKit class RootNavigationController: UINavigationController { var callback : (()->Void)? // 回调函数 var navTitle: String? override func viewDidLoad() { super.viewDidLoad() setNavigationBar() // Do any additional setup after loading the view. } func setNavigationBar() { let apperance = UINavigationBar.appearance() // //设置半透明效果 self.navigationBar.isTranslucent = false //将导航栏上按钮颜色 apperance.tintColor = UIColor(hexString: "222222") //消除分割线 navigationBar.setBackgroundImage(UIImage(), for: .default) navigationBar.shadowImage = navBarShadowImage() //navigationBar.isHidden = true let dict:NSDictionary = [NSAttributedString.Key.foregroundColor: UIColor(hexString: "#222222"),NSAttributedString.Key.font : UIFont(name: PingFangSC_Semibold, size: 19)] //标题颜色 navigationBar.titleTextAttributes = dict as? [NSAttributedString.Key : AnyObject] // //设置导航栏title格式 let backAppearance = UIBarButtonItem.appearance() //设置导航栏返回按钮 if #available(iOS 11, *){ backAppearance.setBackButtonTitlePositionAdjustment(UIOffset(horizontal: -200, vertical: 0), for: UIBarMetrics.default) let backButtonImage = UIImage(named: "fanhui")?.withRenderingMode(UIImage.RenderingMode.alwaysOriginal) apperance.backIndicatorImage = backButtonImage apperance.backIndicatorTransitionMaskImage = backButtonImage }else { //返回按钮没有文字 backAppearance.setBackButtonTitlePositionAdjustment(UIOffset(horizontal: -200, vertical: 0), for: UIBarMetrics.default) let backButtonImage = UIImage(named: "fanhui")?.withRenderingMode(UIImage.RenderingMode.alwaysOriginal) backAppearance.setBackButtonBackgroundImage(backButtonImage?.resizableImage(withCapInsets: UIEdgeInsets(top: 0, left: 32, bottom: 0, right: 0)), for: UIControl.State.normal, barMetrics: UIBarMetrics.default) } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } override func pushViewController(_ viewController: UIViewController, animated: Bool) { if self.viewControllers.count > 0 { viewController.hidesBottomBarWhenPushed = true viewController.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: UIBarButtonItem.Style.plain, target: self, action: #selector(RootNavigationController.backAction )) } super.pushViewController(viewController, animated: animated) } @objc func backAction() { log.debug("当前控制器 \(self.topViewController))") // if self.topViewController == sbtup let detailVC = SBTDeviceDetaiVCtr() if self.topViewController == detailVC{ if callback != nil{ callback!() } } self.navigationController?.popViewController(animated: true) } func navBarShadowImage() -> UIImage? { UIGraphicsBeginImageContextWithOptions(CGSize(width: KSCREENWIDTH, height: 0.5), false, 0) //画线 let path = UIBezierPath(rect: CGRect(x: 0, y: 0, width: KSCREENWIDTH, height: 0.5)) UIColor.white.setFill()//NavigationBar分割线颜色 path.fill() let image = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return image } }