|
@@ -6,8 +6,48 @@
|
|
|
//
|
|
|
|
|
|
final class HomeParentViewController: BaseViewController {
|
|
|
-
|
|
|
- override init() {
|
|
|
+
|
|
|
+ private struct Metric {
|
|
|
+ static let statusBarHeight = isIphoneX ? 44.f : 20.f
|
|
|
+ static let navBarHeight = 44.f
|
|
|
+ }
|
|
|
+ // MARK: 私有属性
|
|
|
+ private var homeService : HomeServiceType
|
|
|
+
|
|
|
+ private var menuTitles : [String] = ["科一", "科二", "科三", "科四"]
|
|
|
+
|
|
|
+ private var idxs: [UInt] = []
|
|
|
+
|
|
|
+ private var menuItemCurrentBtn : UIButton?
|
|
|
+
|
|
|
+ // MARK: UI let
|
|
|
+ let statusBar = UIView().then {
|
|
|
+ $0.backgroundColor = UIColor.db_white
|
|
|
+ }
|
|
|
+
|
|
|
+ let navBar = HomeNavBar.loadFromNib().then {
|
|
|
+ $0.backgroundColor = UIColor.db_white
|
|
|
+ }
|
|
|
+
|
|
|
+ let pageController = VTMagicController().then {
|
|
|
+ $0.view.translatesAutoresizingMaskIntoConstraints = false
|
|
|
+ $0.magicView.navigationColor = .db_white
|
|
|
+ $0.magicView.sliderColor = .db_sliderColor
|
|
|
+ $0.magicView.switchStyle = .default
|
|
|
+ $0.magicView.layoutStyle = .divide
|
|
|
+ $0.magicView.navigationHeight = 44.f
|
|
|
+ $0.magicView.sliderExtension = 3
|
|
|
+ $0.magicView.sliderOffset = 0
|
|
|
+ $0.magicView.sliderHeight = 4
|
|
|
+ $0.magicView.separatorColor = UIColor.db_fontGray
|
|
|
+ $0.magicView.isSeparatorHidden = false
|
|
|
+ $0.magicView.bubbleRadius = 2
|
|
|
+ $0.magicView.needPreloading = true
|
|
|
+ $0.magicView.separatorHeight = 0 //下划线h
|
|
|
+ }
|
|
|
+
|
|
|
+ init(service:HomeServiceType) {
|
|
|
+ self.homeService = service
|
|
|
super.init()
|
|
|
|
|
|
self.title = "考试"
|
|
@@ -15,13 +55,202 @@ final class HomeParentViewController: BaseViewController {
|
|
|
self.tabBarItem.selectedImage = NYImage.TabBar.home_s?.withRenderingMode(.alwaysOriginal)
|
|
|
}
|
|
|
|
|
|
+ required convenience init?(coder aDecoder: NSCoder) {
|
|
|
+ fatalError("init(coder:) has not been implemented")
|
|
|
+ }
|
|
|
+
|
|
|
+ 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 var prefersStatusBarHidden: Bool {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ override func viewWillAppear(_ animated: Bool) {
|
|
|
+ super.viewWillAppear(animated)
|
|
|
+
|
|
|
+ self.navigationController?.setNavigationBarHidden(true, animated: true)
|
|
|
+ }
|
|
|
+
|
|
|
override func viewDidLoad() {
|
|
|
super.viewDidLoad()
|
|
|
+ //注册配置
|
|
|
+ configureMagicController()
|
|
|
+ //配置 homeService
|
|
|
+
|
|
|
+// @IBAction func actionUserClickdo(_ sender: UIButton) {
|
|
|
+//
|
|
|
+// // BilibiliRouter.push(.live_room)
|
|
|
+//
|
|
|
+// }
|
|
|
+ }
|
|
|
|
|
|
- // Do any additional setup after loading the view.
|
|
|
+ // MARK: 私有方法
|
|
|
+ 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 HomeParentViewController : 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 = menuItem
|
|
|
+ menuItem?.titleLabel?.font = UIFont.boldSystemFont(ofSize: 19)
|
|
|
+ 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 HomeParentViewController : 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 = UIButton(type: .custom)
|
|
|
+ menuItem?.setTitleColor(.db_fontGray, for: .normal)
|
|
|
+ menuItem?.setTitleColor(.db_fontBlack, for: .selected)
|
|
|
+ menuItem?.titleLabel?.font = NYFont.SysFont.sys_15
|
|
|
+ if itemIndex==0 {
|
|
|
+ menuItemCurrentBtn = menuItem
|
|
|
+ menuItem?.titleLabel?.font = UIFont.boldSystemFont(ofSize: 19)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return menuItem ?? UIButton()
|
|
|
+ }
|
|
|
+
|
|
|
+ func magicView(_ magicView: VTMagicView, viewControllerAtPage pageIndex: UInt) -> UIViewController {
|
|
|
+
|
|
|
+ if pageIndex == 0 {
|
|
|
+// var liveController = magicView.dequeueReusablePage(withIdentifier: "LiveListViewController")
|
|
|
+// if liveController == nil {
|
|
|
+// let liveSectionReactorFactory: (LiveModuleListModel) -> LiveListSectionReactor = { moduleList in
|
|
|
+// return LiveListSectionReactor(module: moduleList)
|
|
|
+// }
|
|
|
+// let reactor = LiveListViewReactor(service: homeService, liveSectionReactorFactory: liveSectionReactorFactory)
|
|
|
+// liveController = LiveListViewController(reactor: reactor, liveListSectionDelegateFactory: { () -> LiveListSectionDelegate in
|
|
|
+// LiveListSectionDelegate()
|
|
|
+// })
|
|
|
+// }
|
|
|
+// return liveController ?? UIViewController()
|
|
|
+ var exam01_Controller = magicView.dequeueReusablePage(withIdentifier: "Exam01_ParentViewController")
|
|
|
+ if exam01_Controller == nil {
|
|
|
+// let exam01SectionReactorFactory: ()
|
|
|
+
|
|
|
+ exam01_Controller = Exam01_ParentViewController().then{ $0.view.backgroundColor = UIColor.green}
|
|
|
+ }
|
|
|
+
|
|
|
+ return exam01_Controller ?? UIViewController()
|
|
|
+ } else if pageIndex == 1 {
|
|
|
+// var recommendController = magicView.dequeueReusablePage(withIdentifier: "RecommendParentViewController")
|
|
|
+// if recommendController == nil {
|
|
|
+// recommendController = RecommendParentViewController()
|
|
|
+// }
|
|
|
+// return recommendController ?? UIViewController()
|
|
|
+ return UIViewController().then { $0.view.backgroundColor = UIColor.red }
|
|
|
+ } else if pageIndex == 2 {
|
|
|
+ // var dramaController = magicView.dequeueReusablePage(withIdentifier: "DramaViewController")
|
|
|
+ // if dramaController == nil {
|
|
|
+ // let reactor = DramaViewReactor(service: homeService)
|
|
|
+ // dramaController = DramaViewController(reactor: reactor, dramaSectionDelegateFactory: { () -> DramaSectionDelegate in
|
|
|
+ // DramaSectionDelegate()
|
|
|
+ // })
|
|
|
+ // }
|
|
|
+ // return dramaController ?? UIViewController()
|
|
|
+ return UIViewController()
|
|
|
+ } else if pageIndex == 3{
|
|
|
+
|
|
|
+ return UIViewController()
|
|
|
+ } else {
|
|
|
+// var branchController = magicView.dequeueReusablePage(withIdentifier: "BranchViewController")
|
|
|
+// if branchController == nil {
|
|
|
+// let reactor = BranchViewReactor(homeService: homeService)
|
|
|
+// branchController = BranchViewController(reactor: reactor, branchSectionDelegateFactory: { () -> BranchSectionDelegate in
|
|
|
+// BranchSectionDelegate()
|
|
|
+// })
|
|
|
+// }
|
|
|
+// (branchController as! BranchViewController).setId(id: requestIds[Int(pageIndex) - 3])
|
|
|
+// return branchController ?? UIViewController()
|
|
|
+ return UIViewController()
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|