// // IHDashboardMapMainVCtr.swift // Inhealth // // Created by weclouds on 2019/12/13. // Copyright © 2019 weclouds. All rights reserved. // import UIKit import JXSegmentedView class IHDashboardMapMainVCtr: UIViewController { var totalItemWidth: CGFloat = 0 //总长度 var segmentedDataSource:JXSegmentedBaseDataSource? var segmentedView = JXSegmentedView() lazy var listContainerView: JXSegmentedListContainerView! = { return JXSegmentedListContainerView(dataSource: self) }() deinit { log.debug("IHDashboardMapMainVCtr销毁") } override func viewDidLoad() { super.viewDidLoad() self.navigationBarTitle = "GIS地图" totalItemWidth = UIScreen.main.bounds.size.width - 20*2 view.backgroundColor = .white //let titles = ["酒店", "楼层"] let titles = ["酒店"] //设置SegmentedView let titleDataSource = JXSegmentedTitleDataSource() titleDataSource.itemContentWidth = totalItemWidth/CGFloat(titles.count) titleDataSource.titles = titles titleDataSource.titleNormalFont = UIFont(name: PingFangSC_Medium, size: 12)! titleDataSource.titleSelectedFont = UIFont(name: Alibaba_PuHuiTi_Bold, size: 13)! titleDataSource.isTitleMaskEnabled = true titleDataSource.titleNormalColor = UIColor(hexString: "#657085")! titleDataSource.titleSelectedColor = UIColor(hexString: "#FFFFFF")! titleDataSource.itemSpacing = 0 // titleDataSource.isItemSpacingAverageEnabled = false segmentedDataSource = titleDataSource segmentedView.dataSource = segmentedDataSource segmentedView.layer.masksToBounds = true segmentedView.layer.cornerRadius = 15 segmentedView.backgroundColor = UIColor(hexString: "#F6F8F7") segmentedView.delegate = self view.addSubview(segmentedView) //指示器 let indicator = JXSegmentedIndicatorBackgroundView() indicator.indicatorHeight = 25 indicator.backgroundWidthIncrement = -10 indicator.indicatorColor = UIColor(hexString: "#573F95")! indicator.layer.shadowColor = UIColor(hexString: "#573F95")!.cgColor indicator.layer.shadowRadius = 3 indicator.layer.shadowOffset = CGSize.zero indicator.layer.shadowOpacity = 0.7 segmentedView.indicators = [indicator] segmentedView.listContainer = listContainerView view.addSubview(listContainerView) } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) //处于第一个item的时候,才允许屏幕边缘手势返回 navigationController?.interactivePopGestureRecognizer?.isEnabled = (segmentedView.selectedIndex == 0) } override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) //离开页面的时候,需要恢复屏幕边缘手势,不能影响其他页面 navigationController?.interactivePopGestureRecognizer?.isEnabled = true } override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() segmentedView.frame = CGRect(x: 20, y: 10, width: totalItemWidth, height: 30) listContainerView.frame = CGRect(x: 0, y: 50, width: view.bounds.size.width, height: view.bounds.size.height - 50) } } extension IHDashboardMapMainVCtr:JXSegmentedViewDelegate{ func segmentedView(_ segmentedView: JXSegmentedView, didSelectedItemAt index: Int) { if let dotDataSource = segmentedDataSource as? JXSegmentedDotDataSource { //先更新数据源的数据 dotDataSource.dotStates[index] = false //再调用reloadItem(at: index) segmentedView.reloadItem(at: index) } navigationController?.interactivePopGestureRecognizer?.isEnabled = (segmentedView.selectedIndex == 0) } } //必须实现其代理 extension IHDashboardMapMainVCtr:JXSegmentedListContainerViewDataSource{ func numberOfLists(in listContainerView: JXSegmentedListContainerView) -> Int { if let titleDataSource = segmentedView.dataSource as? JXSegmentedBaseDataSource { return titleDataSource.dataSource.count } return 0 } func listContainerView(_ listContainerView: JXSegmentedListContainerView, initListAt index: Int) -> JXSegmentedListContainerViewListDelegate { if index == 0 { return IHDashboardHotelMapVCtr() }else{ return IHDashboardFloorMapVCtr() } } }