IHPanelSettingCell.swift 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. //
  2. // IHPanelSettingCellTableViewCell.swift
  3. // Inhealth
  4. //
  5. // Created by weclouds on 2020/7/25.
  6. // Copyright © 2020 weclouds. All rights reserved.
  7. //
  8. import UIKit
  9. let KNotifitionPanel = "KNotifitionPanel"
  10. class IHPanelSettingCell: UITableViewCell {
  11. private var labelTitle : UILabel?
  12. private var leftBrightnessBtn : UIButton?
  13. private var valueBackView : UIView?
  14. private var tableView : UITableView?
  15. var indexPath : IndexPath?
  16. private var choseBtnTag : Int = 0
  17. private var choseValue : String = ""
  18. let model = ["全开模式","全关模式" ,"上课模式","下课模式","午休模式" ,"自习模式","板书模式" ,"投影模式"]
  19. //let model = ["Attend class mode","Finish class mode","Projection mode","Full-on mode","Full-off mode","Self-study mode"]
  20. var dataSource : [String: String]?{
  21. didSet{
  22. labelTitle?.text = dataSource?.keys.first!
  23. if let value = dataSource?.values.first {
  24. leftBrightnessBtn?.setTitle(value, for: .normal)
  25. }
  26. }
  27. }
  28. class func panelCellWithTableViewAndIndexPath(tableView : UITableView,indexPath : IndexPath) ->IHPanelSettingCell {
  29. let panelId = "panelId"
  30. var cell = tableView.dequeueReusableCell(withIdentifier: panelId)
  31. if cell == nil{
  32. cell = IHPanelSettingCell.init(style: .default, reuseIdentifier: panelId, tableView: tableView, indexPath: indexPath)
  33. }
  34. return cell as! IHPanelSettingCell
  35. }
  36. init(style: UITableViewCell.CellStyle, reuseIdentifier: String?,tableView : UITableView,indexPath : IndexPath){
  37. super.init(style: style, reuseIdentifier: reuseIdentifier)
  38. self.tableView = tableView
  39. //self.indexPath = indexPath
  40. createUI()
  41. }
  42. required init?(coder: NSCoder) {
  43. fatalError("init(coder:) has not been implemented")
  44. }
  45. }
  46. extension IHPanelSettingCell {
  47. func createUI(){
  48. let backView = UIView.init(frame: CGRect.init(x: 0, y: 0, width: KSCREENWIDTH, height: 120))
  49. backView.backgroundColor = .white
  50. //line
  51. let line = UIView.init(frame: CGRect.init(x: 0, y: 119, width: KSCREENWIDTH, height: 1))
  52. line.backgroundColor = UIColor.init(red: 246/255.0, green: 245/255.0, blue: 248/255.0, alpha: 1.0)
  53. backView.addSubview(line)
  54. //上
  55. let labelTitle = UILabel.init(frame: CGRect.init(x: 5, y: 0, width: KSCREENWIDTH, height: 40))
  56. labelTitle.backgroundColor = UIColor.init(red: 246/255.0, green: 245/255.0, blue: 248/255.0, alpha: 1.0)
  57. backView.addSubview(labelTitle)
  58. self.labelTitle = labelTitle
  59. let h : CGFloat = 50
  60. //下
  61. let choseView = UIView.init(frame: CGRect.init(x: 0, y: 40, width: KSCREENWIDTH, height: h))
  62. backView.addSubview(choseView)
  63. let leftBrightnessBtn = UIButton.init(frame: CGRect.init(x: 10, y: 0, width: KSCREENWIDTH - 10 * 2, height: h))
  64. leftBrightnessBtn.setTitle("100%", for: .normal)
  65. leftBrightnessBtn.setTitleColor(.black, for: .normal)
  66. leftBrightnessBtn.setImage(UIImage.init(named: "xialaIcon"), for: .normal)
  67. leftBrightnessBtn.titleLabel?.font = UIFont.systemFont(ofSize: 15.0)
  68. leftBrightnessBtn.titleEdgeInsets = UIEdgeInsets.init(top: 0, left: -20, bottom: 0, right: 0)
  69. leftBrightnessBtn.semanticContentAttribute = .forceRightToLeft
  70. leftBrightnessBtn.addTarget(self, action: #selector(choseBrightness), for: .touchUpInside)
  71. leftBrightnessBtn.tag = 1
  72. //leftView.addSubview(leftBrightnessBtn)
  73. choseView.addSubview(leftBrightnessBtn)
  74. self.leftBrightnessBtn = leftBrightnessBtn
  75. self.contentView.addSubview(backView)
  76. }
  77. }
  78. extension IHPanelSettingCell {
  79. @objc func choseBrightness(sender : UIButton){
  80. self.choseBtnTag = sender.tag
  81. if valueBackView != nil {
  82. valueBackView?.removeFromSuperview()
  83. }
  84. createChosePicker(sender: sender)
  85. }
  86. func createChosePicker(sender : UIButton) {
  87. let point = sender.convert(sender.frame.origin, to: self.tableView)
  88. var valueBackView = UIView.init(frame: CGRect.init(x: (KSCREENWIDTH - point.x * 2) * 0.3 , y: point.y + 45, width: 200, height: 150))
  89. //屏幕底下的显示
  90. if (KSCREENHEIGHT - point.y) < 150 {
  91. //左侧的
  92. valueBackView = UIView.init(frame: CGRect.init(x: (KSCREENWIDTH - point.x * 2) * 0.3, y: point.y - 35 - 150, width: 200, height: 150))
  93. }
  94. valueBackView.backgroundColor = .lightGray
  95. self.tableView?.addSubview(valueBackView)
  96. self.valueBackView = valueBackView
  97. let valueTableView = UITableView.init(frame: CGRect.init(x: 1, y: 1, width: 198, height: 148))
  98. valueTableView.dataSource = self
  99. valueTableView.delegate = self
  100. valueTableView.rowHeight = 40
  101. valueBackView.addSubview(valueTableView)
  102. }
  103. }
  104. extension IHPanelSettingCell : UITableViewDataSource,UITableViewDelegate{
  105. func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  106. return self.model.count
  107. }
  108. func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  109. let panelModelId = "panelModelId"
  110. var cell = tableView.dequeueReusableCell(withIdentifier: panelModelId)
  111. if cell == nil {
  112. cell = UITableViewCell.init(style: .default, reuseIdentifier: panelModelId)
  113. }
  114. cell?.textLabel?.text = self.model[indexPath.row]
  115. return cell!
  116. }
  117. func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
  118. if self.choseBtnTag == 1 {
  119. self.choseValue = model[indexPath.row]
  120. leftBrightnessBtn?.setTitle(choseValue, for: .normal)
  121. choseBtnTag = 0
  122. valueBackView?.removeFromSuperview()
  123. NotificationCenter.default.post(name: NSNotification.Name(rawValue: KNotifitionPanel), object: nil, userInfo: ["indexPath" : self.indexPath!, "choseValue" : choseValue])
  124. }
  125. }
  126. }