// // MeTabBarController.swift // JiaPeiManage // // Created by Ning.ge on 2023/6/26. // import UIKit import ReactorKit import RxCocoa import RxSwift final class MeTabBarController: UITabBarController, View { // MARK: Constants fileprivate struct Metric { static let tabBarHeight = 50.f } // MARK: Properties var disposeBag = DisposeBag() init( reactor: MainTabBarViewReactor, advancetViewController:MeTraineeListViewController, officialViewController:MeTraineeListViewController ) { defer { self.reactor = reactor } super.init(nibName: nil, bundle: nil) self.viewControllers = [advancetViewController, officialViewController] .map{ (viewController) -> UINavigationController in let navigationController = MainNavigationController(rootViewController: viewController) // navigationController.tabBarItem.imageInsets.top = 5 // navigationController.tabBarItem.imageInsets.bottom = 5 navigationController.tabBarItem.titlePositionAdjustment = UIOffset(horizontal: 0, vertical: -3) return navigationController } // 获取当前 tabBar 的选中项 if let items = self.tabBar.items { for item in items { // 设置选中项的标题字体和颜色 item.setTitleTextAttributes([NSAttributedString.Key.font: NYFont.SysFont.sys_10, NSAttributedString.Key.foregroundColor: UIColor("#30B05C") as Any], for: .selected) } } self.selectedIndex = 1 self.tabBar.barTintColor = .db_tbbg } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } // MARK: Configuring func bind(reactor: MainTabBarViewReactor) { self.rx.didSelect .scan((nil, nil)) { state, viewController in return (state.1, viewController) }.subscribe(onNext: { (fromVc,toVc) in // if fromVc == toVc || fromVc == nil { // TogetherDataManager.refreshDataForTab(toVc, true) // } else { // TogetherDataManager.refreshDataForTab(toVc, false) // } // if TogetherDataManager.homePageController(toVc) == nil { // TogetherDataManager.referenceDate = Date() // } }).disposed(by: disposeBag) } override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() if #available(iOS 11.0, *) { self.tabBar.height = Metric.tabBarHeight + self.view.safeAreaInsets.bottom } else { self.tabBar.height = Metric.tabBarHeight } self.tabBar.bottom = self.view.height } }