MeTabBarController.swift 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. //
  2. // MeTabBarController.swift
  3. // JiaPeiManage
  4. //
  5. // Created by Ning.ge on 2023/6/26.
  6. //
  7. import UIKit
  8. import ReactorKit
  9. import RxCocoa
  10. import RxSwift
  11. final class MeTabBarController: UITabBarController, View {
  12. // MARK: Constants
  13. fileprivate struct Metric {
  14. static let tabBarHeight = 50.f
  15. }
  16. // MARK: Properties
  17. var disposeBag = DisposeBag()
  18. init(
  19. reactor: MainTabBarViewReactor,
  20. advancetViewController:MeTraineeListViewController,
  21. officialViewController:MeTraineeListViewController
  22. ) {
  23. defer { self.reactor = reactor }
  24. super.init(nibName: nil, bundle: nil)
  25. self.viewControllers = [advancetViewController,
  26. officialViewController]
  27. .map{ (viewController) -> UINavigationController in
  28. let navigationController = MainNavigationController(rootViewController: viewController)
  29. // navigationController.tabBarItem.imageInsets.top = 5
  30. // navigationController.tabBarItem.imageInsets.bottom = 5
  31. navigationController.tabBarItem.titlePositionAdjustment = UIOffset(horizontal: 0, vertical: -3)
  32. return navigationController
  33. }
  34. // 获取当前 tabBar 的选中项
  35. if let items = self.tabBar.items {
  36. for item in items {
  37. // 设置选中项的标题字体和颜色
  38. item.setTitleTextAttributes([NSAttributedString.Key.font: NYFont.SysFont.sys_10,
  39. NSAttributedString.Key.foregroundColor: UIColor("#30B05C") as Any],
  40. for: .selected)
  41. }
  42. }
  43. self.selectedIndex = 1
  44. self.tabBar.barTintColor = .db_tbbg
  45. }
  46. required init?(coder aDecoder: NSCoder) {
  47. fatalError("init(coder:) has not been implemented")
  48. }
  49. // MARK: Configuring
  50. func bind(reactor: MainTabBarViewReactor) {
  51. self.rx.didSelect
  52. .scan((nil, nil)) { state, viewController in
  53. return (state.1, viewController)
  54. }.subscribe(onNext: { (fromVc,toVc) in
  55. // if fromVc == toVc || fromVc == nil {
  56. // TogetherDataManager.refreshDataForTab(toVc, true)
  57. // } else {
  58. // TogetherDataManager.refreshDataForTab(toVc, false)
  59. // }
  60. // if TogetherDataManager.homePageController(toVc) == nil {
  61. // TogetherDataManager.referenceDate = Date()
  62. // }
  63. }).disposed(by: disposeBag)
  64. }
  65. override func viewDidLayoutSubviews() {
  66. super.viewDidLayoutSubviews()
  67. if #available(iOS 11.0, *) {
  68. self.tabBar.height = Metric.tabBarHeight + self.view.safeAreaInsets.bottom
  69. } else {
  70. self.tabBar.height = Metric.tabBarHeight
  71. }
  72. self.tabBar.bottom = self.view.height
  73. }
  74. }