IHCentralizedView.swift 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. //
  2. // IHCentralizedView.swift
  3. // Inhealth
  4. //
  5. // Created by weclouds on 2019/12/14.
  6. // Copyright © 2019 weclouds. All rights reserved.
  7. //
  8. import UIKit
  9. //import TKSwitcherCollection
  10. extension UILabel{
  11. func isEmpty(_ placehodler :String?) {
  12. self.textColor = UIColor(hexString: "#C6CDD5")
  13. self.text = placehodler
  14. }
  15. //重新设置
  16. func reset() {
  17. self.textColor = UIColor(hexString: "#333333")
  18. }
  19. }
  20. protocol IHCentralizedViewDelegate : NSObjectProtocol {
  21. func centralizeSetting(roomId:String,light:String,color:String,colorR:String,colorG:String,colorB:String,status:String,level:String)
  22. }
  23. class IHCentralizedView: UIView {
  24. weak var delegate : IHCentralizedViewDelegate?
  25. private var roomId:String?
  26. private var light:String? = "25"
  27. private var color:String? = "5"
  28. private var colorR:String? = "0"
  29. private var colorG:String? = "0"
  30. private var colorB:String? = "0"
  31. var floorList:[RoomListData]?{
  32. didSet{
  33. floorNames = IHCentrlizedService.share.getFloorNameList(from: self.floorList)
  34. floorNameLabel.text = floorNames?.first
  35. if floorNames != nil || floorNames!.count > 0 {
  36. floorNameLabel.reset()
  37. //获取第一层楼的房间列表
  38. roomNames = IHCentrlizedService.share.getFirstRooms(self.floorList)
  39. roomNumberLabel.text = roomNames?.first
  40. //第一个房间id
  41. self.roomId = IHCentrlizedService.share.getFirstRoomID(self.floorList)
  42. }else{
  43. floorNameLabel.isEmpty("Please chose Floor")
  44. }
  45. selectedFloor = self.floorList?.first // 默认选择第一个
  46. }
  47. }
  48. var selectedFloor: RoomListData?
  49. var floorNames :[String]?
  50. var roomNames :[String]?
  51. var purifierStatus: String? = "0"
  52. var purifierLevel:String? = "1"
  53. @IBOutlet weak var brightnessLabel: UILabel!
  54. @IBOutlet weak var brightnessSlider: IHSlider!
  55. @IBOutlet weak var colorTemperatureSlider: IHSlider!
  56. @IBOutlet weak var colorTemperatureSliderLabel: UILabel!
  57. @IBOutlet weak var ColorBoxView: UIView!
  58. @IBOutlet weak var exchangeSwitch: UIButton!
  59. @IBOutlet weak var floorBox: UIView!
  60. @IBOutlet weak var floorNameLabel: UILabel!
  61. @IBOutlet weak var scenceBox: UIView!
  62. @IBOutlet weak var scenceModeLabel: UILabel!
  63. @IBOutlet weak var roomBox: UIView!
  64. @IBOutlet weak var roomNumberLabel: UITextField!
  65. @IBOutlet weak var purifierBox: UIView!
  66. @IBOutlet weak var purifierLevelLabel: UILabel!
  67. lazy var colorAdjustmentView: IHColorAdjustmentView = {
  68. let view = Bundle.main.loadNibNamed("IHColorAdjustmentView", owner: nil, options: nil)?.first as! IHColorAdjustmentView
  69. view.delegate = self
  70. return view
  71. }()
  72. override func awakeFromNib() {
  73. super.awakeFromNib()
  74. setupView()
  75. addGesture()
  76. }
  77. override func layoutSubviews() {
  78. super.layoutSubviews()
  79. colorAdjustmentView.frame = ColorBoxView.bounds
  80. }
  81. ///设置子视图
  82. func setupView() {
  83. ColorBoxView.addSubview(colorAdjustmentView)
  84. brightnessSlider.minimumValue = 0
  85. brightnessSlider.maximumValue = 100
  86. colorTemperatureSlider.minimumValue = 0
  87. colorTemperatureSlider.maximumValue = 10
  88. brightnessSlider.value = 25
  89. colorTemperatureSlider.value = 5
  90. brightnessLabel.text = "50%"
  91. colorTemperatureSliderLabel.text = "4500k"
  92. let image1 = originImage(UIImage(named: "greenThumb")!, scaleToSize: CGSize(width: 20, height: 20))
  93. colorTemperatureSlider.setThumbImage(image1, for: .normal)
  94. colorTemperatureSlider.setThumbImage(image1, for: .highlighted)
  95. let image2 = originImage(UIImage(named: "紫色进度条按钮")!, scaleToSize: CGSize(width: 20, height: 20))
  96. brightnessSlider.setThumbImage(image2, for: .normal)
  97. brightnessSlider.setThumbImage(image2, for: .highlighted)
  98. }
  99. ///添加点击手势
  100. func addGesture() {
  101. let floorTap = UITapGestureRecognizer(target: self, action: #selector(tapFloorBoxAction))
  102. floorBox.addGestureRecognizer(floorTap)
  103. let roomTap = UITapGestureRecognizer(target: self, action: #selector(tapRoomBoxAction))
  104. roomBox.addGestureRecognizer(roomTap)
  105. let scenceTap = UITapGestureRecognizer(target: self, action: #selector(tapScenceBoxAction))
  106. scenceBox.addGestureRecognizer(scenceTap)
  107. let purifierTap = UITapGestureRecognizer(target: self, action: #selector(tapPurifierBoxAction))
  108. purifierBox.addGestureRecognizer(purifierTap)
  109. }
  110. @IBAction func brightnessEndChange(_ sender: UISlider) {
  111. self.light = "\(Int(sender.value))"
  112. log.debug(Int(sender.value))
  113. let bright = (sender.value)
  114. self.brightnessLabel.text = "\(Int(bright))%"
  115. }
  116. @IBAction func colorTempEndChange(_ sender: UISlider) {
  117. log.debug(Int(sender.value))
  118. let index = Int(sender.value + 0.5)
  119. colorTemperatureSlider.setValue(Float(index), animated: false)
  120. self.colorTemperatureSliderLabel.text = "\(index * 300 + 3000)k"
  121. self.color = "\(index * 300 + 3000)"
  122. }
  123. func originImage(_ image:UIImage, scaleToSize size:CGSize) -> UIImage {
  124. UIGraphicsBeginImageContext(size)
  125. image.draw(in: CGRect(x: 0, y: 0, width: size.width, height: size.height))
  126. let scaleImage = UIGraphicsGetImageFromCurrentImageContext()
  127. UIGraphicsEndImageContext()
  128. return scaleImage!
  129. }
  130. @IBAction func preserveAction(_ sender: Any) {
  131. if let delegate = self.delegate{
  132. delegate.centralizeSetting(roomId: self.roomId!, light: self.light!, color: self.color!, colorR: self.colorR!, colorG: self.colorG!, colorB: self.colorB!, status: self.purifierStatus!, level: self.purifierLevel!)
  133. }
  134. }
  135. @objc func tapFloorBoxAction() {
  136. let titleArr = self.floorNames
  137. let pick = THScrollChooseView(question: titleArr, withDefaultDesc: titleArr?.first)
  138. pick?.confirmBlock = {(selectedIndex) in
  139. log.debug(" title = \(titleArr?[selectedIndex] ?? "")")
  140. let floor = self.floorList?[selectedIndex]
  141. self.floorNameLabel.text = floor?.name
  142. self.selectedFloor = floor
  143. //获取房间
  144. self.roomNames = IHCentrlizedService.share.getRoomNameList(from: floor?.roomList)
  145. self.roomNumberLabel.text = self.roomNames?.first
  146. if self.floorNames != nil || self.floorNames!.count > 0 {
  147. self.floorNameLabel.reset()
  148. }else{
  149. self.floorNameLabel.isEmpty("Please chose Floor")
  150. }
  151. //获取第一层楼的房间列表
  152. }
  153. pick?.show()
  154. }
  155. @objc func tapRoomBoxAction() {
  156. log.debug(" tapRoomBoxAction")
  157. let titleArr = self.roomNames
  158. let pick = THScrollChooseView(question: titleArr, withDefaultDesc: titleArr?.first)
  159. if titleArr?.count == 0 {
  160. g_showHUD("在此层还没有添加房间!")
  161. return
  162. }
  163. pick?.confirmBlock = {(selectedIndex) in
  164. // log.debug(" title = \(titleArr?[selectedIndex] ?? " ")")
  165. self.roomId = IHCentrlizedService.share.getRoomId(from: self.selectedFloor, roomIndex: selectedIndex)
  166. self.roomNumberLabel.text = titleArr?[selectedIndex]
  167. }
  168. pick?.show()
  169. }
  170. @objc func tapScenceBoxAction() {
  171. log.debug(" tapScenceBoxAction")
  172. let titleArr = ["自定义模式","阅读模式","全面模式","休息模式","放松模式","工作模式"]
  173. let pick = THScrollChooseView(question: titleArr, withDefaultDesc: titleArr.first)
  174. pick?.confirmBlock = {(selectedIndex) in
  175. self.scenceModeLabel.text = titleArr[selectedIndex]
  176. log.debug(" title = \(titleArr[selectedIndex])")
  177. }
  178. pick?.show()
  179. }
  180. @objc func tapPurifierBoxAction() {
  181. log.debug(" tapPurifierBoxAction")
  182. let titleArr = ["低档","中档","高档"]
  183. let pick = THScrollChooseView(question: titleArr, withDefaultDesc: titleArr.first)
  184. pick?.confirmBlock = {(selectedIndex) in
  185. log.debug(" title = \(titleArr[selectedIndex])")
  186. self.purifierLevelLabel.text = titleArr[selectedIndex]
  187. self.purifierLevel = "\(selectedIndex + 1)"
  188. }
  189. pick?.show()
  190. }
  191. @IBAction func switchAction(_ sender: UIButton) {
  192. sender.isSelected = !sender.isSelected
  193. self.purifierStatus = sender.isSelected == true ? "1" : "0"
  194. }
  195. }
  196. extension IHCentralizedView :IHColorAdjustmentViewDelegate{
  197. func colorAdjustmentViewChangedColor(red: Int, green: Int, blue: Int) {
  198. self.colorR = "\(red)"
  199. self.colorG = "\(green)"
  200. self.colorB = "\(blue)"
  201. }
  202. }