IHRoomLightColorCell.swift 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. //
  2. // IHRoomLightColorCell.swift
  3. // Inhealth
  4. //
  5. // Created by weclouds on 2019/12/16.
  6. // Copyright © 2019 weclouds. All rights reserved.
  7. //
  8. import UIKit
  9. let kNotificationIHRoomLightColorCellChangeSwitchStatus = "kNotificationIHRoomLightColorCellChangeSwitchStatus"
  10. protocol IHRoomLightColorCellDelegate : NSObjectProtocol{
  11. //调节亮度值
  12. func adjustBrightness(_ light :Int)
  13. //调节色温
  14. func adjustColorTemperature(_ color:Int)
  15. //调节颜色
  16. func adjustColor(_ red:Int,green:Int,blue:Int)
  17. }
  18. class IHRoomLightColorCell: UITableViewCell {
  19. var switchStatus :String? = "1"
  20. weak var delegate: IHRoomLightColorCellDelegate?
  21. var lightId :String?
  22. var brightness :Int?{
  23. didSet{
  24. if let brightness = self.brightness {
  25. // 0 ~ 50
  26. // 3/ 50 * 100
  27. let value : Float = Float(brightness)
  28. self.brightLabel.text = "\(Int(value))%"
  29. brightSlider.value = Float(brightness)
  30. }
  31. }
  32. }
  33. var color :Int?{
  34. didSet{
  35. if let color = self.color {
  36. self.colorTempLabel.text = "\(color)k"
  37. colorTempSlider.value = Float((color - 3000) / 300 )
  38. }
  39. }
  40. }
  41. var colorStruct :ColorStruct?{
  42. didSet{
  43. colorAdjustmentView.colorStruct = self.colorStruct
  44. }
  45. }
  46. var model :String?{
  47. didSet{
  48. if let model = self.model {
  49. if model == "0" {
  50. self.wecl10Box.isHidden = false
  51. self.tempColorBox.isHidden = true
  52. self.colorBox.isHidden = true
  53. self.wecl20Box.isHidden = true
  54. }else if model == "1"{
  55. self.tempColorBox.isHidden = false
  56. self.wecl20Box.isHidden = false
  57. self.wecl10Box.isHidden = true
  58. self.colorBox.isHidden = true
  59. }else{
  60. self.tempColorBox.isHidden = false
  61. self.colorBox.isHidden = false
  62. self.wecl10Box.isHidden = true
  63. self.wecl20Box.isHidden = true
  64. }
  65. }
  66. }
  67. }
  68. var colorR :Int?
  69. //色温
  70. @IBOutlet weak var tempColorBox: UIView!
  71. //we_cl10
  72. @IBOutlet weak var wecl10Box: UIView!
  73. //we_cl20
  74. @IBOutlet weak var wecl20Box: UIView!
  75. @IBOutlet weak var colorBox: UIView!
  76. @IBOutlet weak var brightLabel: UILabel!
  77. @IBOutlet weak var colorTempLabel: UILabel!
  78. @IBOutlet weak var brightSlider: IHSlider!
  79. @IBOutlet weak var colorTempSlider: IHSlider!
  80. lazy var colorAdjustmentView: IHColorAdjustmentView = {
  81. let view = Bundle.main.loadNibNamed("IHColorAdjustmentView", owner: nil, options: nil)?.first as! IHColorAdjustmentView
  82. view.delegate = self
  83. return view
  84. }()
  85. override func awakeFromNib() {
  86. super.awakeFromNib()
  87. // Initialization code
  88. NotificationCenter.default.addObserver(self, selector: #selector(switchStatusNotify), name: NSNotification.Name(kNotificationIHRoomLightColorCellChangeSwitchStatus), object: nil)
  89. createUI()
  90. }
  91. deinit {
  92. NotificationCenter.default.removeObserver(self)
  93. }
  94. override func layoutSubviews() {
  95. super.layoutSubviews()
  96. colorAdjustmentView.frame = colorBox.bounds
  97. }
  98. @objc func switchStatusNotify(_ notify:Notification) {
  99. let status = notify.object as! String
  100. self.switchStatus = status
  101. }
  102. func createUI() {
  103. colorBox.addSubview(colorAdjustmentView)
  104. brightSlider.isContinuous = true //设置了连续变化
  105. colorTempSlider.isContinuous = true
  106. brightSlider.minimumValue = 0
  107. brightSlider.maximumValue = 100
  108. colorTempSlider.minimumValue = 0
  109. colorTempSlider.maximumValue = 10
  110. let image1 = originImage(UIImage(named: "yellowThumb")!, scaleToSize: CGSize(width: 20, height: 20))
  111. colorTempSlider.setThumbImage(image1, for: .normal)
  112. colorTempSlider.setThumbImage(image1, for: .highlighted)
  113. let image2 = originImage(UIImage(named: "greenThumb")!, scaleToSize: CGSize(width: 20, height: 20))
  114. brightSlider.setThumbImage(image2, for: .normal)
  115. brightSlider.setThumbImage(image2, for: .highlighted)
  116. }
  117. override func setSelected(_ selected: Bool, animated: Bool) {
  118. super.setSelected(selected, animated: animated)
  119. // Configure the view for the selected state
  120. }
  121. @IBAction func brightAction(_ sender: UISlider) {
  122. if self.switchStatus == "0" {
  123. g_showHUD("此灯已关")
  124. //self.brightSlider.value = 0
  125. return
  126. }
  127. let bright = (sender.value )
  128. let brightness = Int(bright )
  129. let value = Int(sender.value)
  130. log.debug("value - \(value) --- brightness - \(brightness)")
  131. if let delegate = self.delegate {
  132. delegate.adjustBrightness(value)
  133. }
  134. }
  135. @IBAction func colorTempratureAction(_ sender: UISlider) {
  136. if self.switchStatus == "0" {
  137. g_showHUD("此灯已关")
  138. // self.colorTempSlider.value = 0
  139. return
  140. }
  141. let index = Int(sender.value + 0.5)
  142. let value = Int(index * 300) + 3000
  143. log.debug("最终值 --- \(value)")
  144. if let delegate = self.delegate {
  145. delegate.adjustColorTemperature(value)
  146. }
  147. }
  148. @IBAction func colorValueChange(_ sender: UISlider) {
  149. //let value = sender.value
  150. let index = Int(sender.value + 0.5)
  151. colorTempSlider.setValue(Float(index), animated: false)
  152. self.colorTempLabel.text = "\(index * 300 + 3000)k"
  153. }
  154. @IBAction func brightValueChange(_ sender: UISlider) {
  155. let bright = (sender.value )
  156. self.brightLabel.text = "\(Int(bright))%"
  157. }
  158. private func originImage(_ image:UIImage, scaleToSize size:CGSize) -> UIImage {
  159. UIGraphicsBeginImageContext(size)
  160. image.draw(in: CGRect(x: 0, y: 0, width: size.width, height: size.height))
  161. let scaleImage = UIGraphicsGetImageFromCurrentImageContext()
  162. UIGraphicsEndImageContext()
  163. return scaleImage!
  164. }
  165. }
  166. extension IHRoomLightColorCell:IHColorAdjustmentViewDelegate{
  167. func colorAdjustmentViewChangedColor(red: Int, green: Int, blue: Int) {
  168. if self.switchStatus == "0" {
  169. g_showHUD("此灯已关")
  170. // colorAdjustmentView.colorStruct = ColorStruct(Red: 0, Green: 0, Blue: 0)
  171. return
  172. }
  173. if let delegete = self.delegate {
  174. delegete.adjustColor(red, green: green, blue: blue)
  175. }
  176. }
  177. }