IHPermissionVCtr.swift 4.3 KB

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