// // MeTraineeListViewController.swift // JiaPeiManage // // Created by Ning.ge on 2023/6/13. // import UIKit import RxSwift import RxCocoa final class MeTraineeListViewController: BaseViewController { private struct Metric { static let statusBarHeight = isIphoneX ? 44.f : 20.f static let navBarHeight = 44.f } // MARK: 私有属性 private var menuTitles : [String] = ["科一", "科二", "科三", "科四", "毕业"] private var idxs: [UInt] = [] private var menuItemCurrentBtn : UIButton? // MARK: UI let let statusBar = UIView().then { $0.backgroundColor = UIColor.db_theme } let navBar = MeTraineeNavBar.loadFromNib() let pageController = VTMagicController().then { $0.view.translatesAutoresizingMaskIntoConstraints = false $0.magicView.navigationColor = .db_theme_L2 $0.magicView.sliderColor = .db_sliderColor $0.magicView.switchStyle = .default $0.magicView.layoutStyle = .divide $0.magicView.navigationHeight = 57.f // $0.magicView.sliderExtension = -10 $0.magicView.sliderWidth = 22.f $0.magicView.sliderOffset = -8 $0.magicView.sliderHeight = 4 $0.magicView.isSeparatorHidden = false $0.magicView.bubbleRadius = 2 $0.magicView.needPreloading = true $0.magicView.separatorHeight = 0 //下划线h } override func setupConstraints() { statusBar.snp.makeConstraints { (make) in make.left.right.top.equalToSuperview() make.height.equalTo(Metric.statusBarHeight) } navBar.snp.remakeConstraints { (make) in make.left.right.equalToSuperview() make.height.equalTo(Metric.navBarHeight) make.top.equalTo(statusBar.snp.bottom) } pageController.view.snp.makeConstraints { (make) in make.left.right.bottom.equalToSuperview() make.top.equalTo(navBar.snp.bottom) } } func scrollViewDidScroll(_ scrollView: UIScrollView) { } // MARK: StatusBar override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) self.navigationController?.setNavigationBarHidden(true, animated: true) } override func viewDidLoad() { super.viewDidLoad() setupUI() configureMagicController() } // MARK: 私有方法 func setupUI(){ self.view.backgroundColor = .db_theme self.navBar.back_button.addTarget(self, action: #selector(actionBackdo), for: .touchUpInside) self.navBar.search_button.rx.tap.subscribe ({ _ in NYSwRouter.push(NYSwPushType.trainee_search.path) }).disposed(by: disposeBag) } func configureMagicController(){ self.view.addSubview(navBar) self.view.addSubview(statusBar) self.addChild(pageController) self.view.addSubview(pageController.view) //设置VTMagicController代理,初始页码 pageController.magicView.delegate = self pageController.magicView.dataSource = self pageController.magicView.reloadData(toPage: 0) } } //VTMagicViewDelegate view代理 extension MeTraineeListViewController : VTMagicViewDelegate { func magicView(_ magicView: VTMagicView, didSelectItemAt itemIndex: UInt) { var menuItem = magicView.menuItem(at: itemIndex) if (menuItemCurrentBtn != nil) { menuItemCurrentBtn?.titleLabel?.font = NYFont.SysFont.sys_15 menuItemCurrentBtn?.qmui_badgeLabel?.isHidden = true } menuItemCurrentBtn = menuItem menuItem?.titleLabel?.font = UIFont.boldSystemFont(ofSize: 17) menuItem?.qmui_badgeLabel?.isHidden = false if itemIndex == 0 || itemIndex == 1 { guard let currentVc = pageController.currentViewController else { return } let currentPage = pageController.currentPage if currentPage == itemIndex { // TogetherDataManager.refreshDataForVTMagic(currentVc,true) } } } func magicView(_ magicView: VTMagicView, viewDidAppear viewController: UIViewController, atPage pageIndex: UInt) { if pageIndex == 0 || pageIndex == 1 { var canRefresh: Bool = false if let collectionVc = viewController as? BaseCollectionViewController { if collectionVc.totalItems() > 0 { canRefresh = true } } if idxs.contains(pageIndex) || canRefresh { // TogetherDataManager.refreshDataForVTMagic(viewController, false) } } } func magicView(_ magicView: VTMagicView, viewDidDisappear viewController: UIViewController, atPage pageIndex: UInt) { if pageIndex == 0 || pageIndex == 1 { if !idxs.contains(pageIndex) { idxs.append(pageIndex) } } if pageIndex == 1 { // TogetherDataManager.referenceDate = Date() } } } //VTMagicViewDataSource 数据源代理 extension MeTraineeListViewController : VTMagicViewDataSource{ func menuTitles(for magicView: VTMagicView) -> [String] { return menuTitles } func magicView(_ magicView: VTMagicView, menuItemAt itemIndex: UInt) -> UIButton { var menuItem = magicView.dequeueReusableItem(withIdentifier: "homeItemIdentifier") if menuItem == nil { menuItem = QMUIButton(type: .custom) menuItem?.setTitleColor(.db_fontGray, for: .normal) menuItem?.setTitleColor(.db_fontSelColor, for: .selected) menuItem?.titleLabel?.font = NYFont.SysFont.sys_15 if itemIndex==0 { menuItemCurrentBtn = menuItem menuItem?.titleLabel?.font = UIFont.boldSystemFont(ofSize: 17) } menuItem?.qmui_badgeBackgroundColor = UIColor("#F84444") menuItem?.qmui_badgeTextColor = UIColor.white menuItem?.qmui_badgeInteger = 50 menuItem?.qmui_badgeLabel?.isHidden = true menuItem?.qmui_badgeFont = NYFont.SysFont.sys_10 menuItem?.qmui_badgeOffset = CGPoint(x: -35, y: 26) menuItem?.qmui_badgeContentEdgeInsets = UIEdgeInsets(top: 2, left: 2, bottom: 2, right: 2) } return menuItem ?? UIButton() } func magicView(_ magicView: VTMagicView, viewControllerAtPage pageIndex: UInt) -> UIViewController { if pageIndex == 0 { var meTraineeSubjectPageViewController = magicView.dequeueReusablePage(withIdentifier: "MeTraineeSubjectPageViewController01") if meTraineeSubjectPageViewController == nil { meTraineeSubjectPageViewController = MeTraineeSubjectPageViewController(state: "1") } return meTraineeSubjectPageViewController ?? UIViewController() } else if pageIndex == 1 { var meTraineeSubjectPageViewController = magicView.dequeueReusablePage(withIdentifier: "MeTraineeSubjectPageViewController02") if meTraineeSubjectPageViewController == nil { meTraineeSubjectPageViewController = MeTraineeSubjectPageViewController(state: "2") } return meTraineeSubjectPageViewController ?? UIViewController() } else if pageIndex == 2 { var meTraineeSubjectPageViewController = magicView.dequeueReusablePage(withIdentifier: "MeTraineeSubjectPageViewController03") if meTraineeSubjectPageViewController == nil { meTraineeSubjectPageViewController = MeTraineeSubjectPageViewController(state: "3") } return meTraineeSubjectPageViewController ?? UIViewController() } else if pageIndex == 3{ var meTraineeSubjectPageViewController = magicView.dequeueReusablePage(withIdentifier: "MeTraineeSubjectPageViewController04") if meTraineeSubjectPageViewController == nil { meTraineeSubjectPageViewController = MeTraineeSubjectPageViewController(state: "4") } return meTraineeSubjectPageViewController ?? UIViewController() } else { var meTraineeSubjectPageViewController = magicView.dequeueReusablePage(withIdentifier: "MeTraineeSubjectPageViewController05") if meTraineeSubjectPageViewController == nil { meTraineeSubjectPageViewController = MeTraineeSubjectPageViewController(state: "5") } return meTraineeSubjectPageViewController ?? UIViewController() } } }