IHDashboardMapMainVCtr.swift 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. //
  2. // IHDashboardMapMainVCtr.swift
  3. // Inhealth
  4. //
  5. // Created by weclouds on 2019/12/13.
  6. // Copyright © 2019 weclouds. All rights reserved.
  7. //
  8. import UIKit
  9. import JXSegmentedView
  10. class IHDashboardMapMainVCtr: UIViewController {
  11. var totalItemWidth: CGFloat = 0 //总长度
  12. var segmentedDataSource:JXSegmentedBaseDataSource?
  13. var segmentedView = JXSegmentedView()
  14. lazy var listContainerView: JXSegmentedListContainerView! = {
  15. return JXSegmentedListContainerView(dataSource: self)
  16. }()
  17. deinit {
  18. log.debug("IHDashboardMapMainVCtr销毁")
  19. }
  20. override func viewDidLoad() {
  21. super.viewDidLoad()
  22. self.navigationBarTitle = "GIS地图"
  23. totalItemWidth = UIScreen.main.bounds.size.width - 20*2
  24. view.backgroundColor = .white
  25. //let titles = ["酒店", "楼层"]
  26. let titles = ["酒店"]
  27. //设置SegmentedView
  28. let titleDataSource = JXSegmentedTitleDataSource()
  29. titleDataSource.itemContentWidth = totalItemWidth/CGFloat(titles.count)
  30. titleDataSource.titles = titles
  31. titleDataSource.titleNormalFont = UIFont(name: PingFangSC_Medium, size: 12)!
  32. titleDataSource.titleSelectedFont = UIFont(name: Alibaba_PuHuiTi_Bold, size: 13)!
  33. titleDataSource.isTitleMaskEnabled = true
  34. titleDataSource.titleNormalColor = UIColor(hexString: "#657085")!
  35. titleDataSource.titleSelectedColor = UIColor(hexString: "#FFFFFF")!
  36. titleDataSource.itemSpacing = 0
  37. // titleDataSource.isItemSpacingAverageEnabled = false
  38. segmentedDataSource = titleDataSource
  39. segmentedView.dataSource = segmentedDataSource
  40. segmentedView.layer.masksToBounds = true
  41. segmentedView.layer.cornerRadius = 15
  42. segmentedView.backgroundColor = UIColor(hexString: "#F6F8F7")
  43. segmentedView.delegate = self
  44. view.addSubview(segmentedView)
  45. //指示器
  46. let indicator = JXSegmentedIndicatorBackgroundView()
  47. indicator.indicatorHeight = 25
  48. indicator.backgroundWidthIncrement = -10
  49. indicator.indicatorColor = UIColor(hexString: "#573F95")!
  50. indicator.layer.shadowColor = UIColor(hexString: "#573F95")!.cgColor
  51. indicator.layer.shadowRadius = 3
  52. indicator.layer.shadowOffset = CGSize.zero
  53. indicator.layer.shadowOpacity = 0.7
  54. segmentedView.indicators = [indicator]
  55. segmentedView.listContainer = listContainerView
  56. view.addSubview(listContainerView)
  57. }
  58. override func viewWillAppear(_ animated: Bool) {
  59. super.viewWillAppear(animated)
  60. //处于第一个item的时候,才允许屏幕边缘手势返回
  61. navigationController?.interactivePopGestureRecognizer?.isEnabled = (segmentedView.selectedIndex == 0)
  62. }
  63. override func viewWillDisappear(_ animated: Bool) {
  64. super.viewWillDisappear(animated)
  65. //离开页面的时候,需要恢复屏幕边缘手势,不能影响其他页面
  66. navigationController?.interactivePopGestureRecognizer?.isEnabled = true
  67. }
  68. override func viewDidLayoutSubviews() {
  69. super.viewDidLayoutSubviews()
  70. segmentedView.frame = CGRect(x: 20, y: 10, width: totalItemWidth, height: 30)
  71. listContainerView.frame = CGRect(x: 0, y: 50, width: view.bounds.size.width, height: view.bounds.size.height - 50)
  72. }
  73. }
  74. extension IHDashboardMapMainVCtr:JXSegmentedViewDelegate{
  75. func segmentedView(_ segmentedView: JXSegmentedView, didSelectedItemAt index: Int) {
  76. if let dotDataSource = segmentedDataSource as? JXSegmentedDotDataSource {
  77. //先更新数据源的数据
  78. dotDataSource.dotStates[index] = false
  79. //再调用reloadItem(at: index)
  80. segmentedView.reloadItem(at: index)
  81. }
  82. navigationController?.interactivePopGestureRecognizer?.isEnabled = (segmentedView.selectedIndex == 0)
  83. }
  84. }
  85. //必须实现其代理
  86. extension IHDashboardMapMainVCtr:JXSegmentedListContainerViewDataSource{
  87. func numberOfLists(in listContainerView: JXSegmentedListContainerView) -> Int {
  88. if let titleDataSource = segmentedView.dataSource as? JXSegmentedBaseDataSource {
  89. return titleDataSource.dataSource.count
  90. }
  91. return 0
  92. }
  93. func listContainerView(_ listContainerView: JXSegmentedListContainerView, initListAt index: Int) -> JXSegmentedListContainerViewListDelegate {
  94. if index == 0 {
  95. return IHDashboardHotelMapVCtr()
  96. }else{
  97. return IHDashboardFloorMapVCtr()
  98. }
  99. }
  100. }