IHSceneModeView.swift 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. //
  2. // IHSceneModeView.swift
  3. // Inhealth
  4. //
  5. // Created by weclouds on 2020/3/7.
  6. // Copyright © 2020 weclouds. All rights reserved.
  7. //
  8. import UIKit
  9. protocol IHSceneModeViewDelegate : NSObjectProtocol{
  10. func sceneModeViewSetting(roomId:String,light:String?,color:String?,colorR:String?,colorG:String?,colorB:String?,status:String?,level:String?)
  11. }
  12. class IHSceneModeView: UIView {
  13. var delegate : IHSceneModeViewDelegate?
  14. var roomId:String?
  15. private var light:String? = "25"
  16. private var color:String? = "5"
  17. private var colorR:String? = "0"
  18. private var colorG:String? = "0"
  19. private var colorB:String? = "0"
  20. var purifierStatus: String? = "0"
  21. var purifierLevel:String? = "1"
  22. @IBOutlet weak var BOX: UIView!
  23. @IBOutlet weak var boxHeightConstraint: NSLayoutConstraint!
  24. @IBOutlet weak var brightnessLabel: UILabel!
  25. @IBOutlet weak var brightnessSlider: IHSlider!
  26. @IBOutlet weak var colorTemperatureSlider: IHSlider!
  27. @IBOutlet weak var colorTemperatureSliderLabel: UILabel!
  28. @IBOutlet weak var scenceBox: UIView!
  29. @IBOutlet weak var scenceModeLabel: UILabel!
  30. @IBOutlet weak var purifierBox: UIView!
  31. @IBOutlet weak var purifierLevelLabel: UILabel!
  32. @IBOutlet weak var exchangeSwitch: UIButton!
  33. @IBOutlet weak var ColorBoxView: UIView!
  34. lazy var colorAdjustmentView: IHColorAdjustmentView = {
  35. let view = Bundle.main.loadNibNamed("IHColorAdjustmentView", owner: nil, options: nil)?.first as! IHColorAdjustmentView
  36. view.delegate = self
  37. return view
  38. }()
  39. override func awakeFromNib() {
  40. super.awakeFromNib()
  41. setupView()
  42. addGesture()
  43. }
  44. override func layoutSubviews() {
  45. super.layoutSubviews()
  46. colorAdjustmentView.frame = ColorBoxView.bounds
  47. }
  48. ///设置子视图
  49. func setupView() {
  50. ColorBoxView.addSubview(colorAdjustmentView)
  51. brightnessSlider.minimumValue = 0
  52. brightnessSlider.maximumValue = 100
  53. colorTemperatureSlider.minimumValue = 0
  54. colorTemperatureSlider.maximumValue = 10
  55. brightnessSlider.value = 25
  56. colorTemperatureSlider.value = 5
  57. brightnessLabel.text = "50%"
  58. colorTemperatureSliderLabel.text = "4500k"
  59. let image1 = originImage(UIImage(named: "yellowThumb")!, scaleToSize: CGSize(width: 20, height: 20))
  60. colorTemperatureSlider.setThumbImage(image1, for: .normal)
  61. colorTemperatureSlider.setThumbImage(image1, for: .highlighted)
  62. let image2 = originImage(UIImage(named: "greenThumb")!, scaleToSize: CGSize(width: 20, height: 20))
  63. brightnessSlider.setThumbImage(image2, for: .normal)
  64. brightnessSlider.setThumbImage(image2, for: .highlighted)
  65. }
  66. ///添加点击手势
  67. func addGesture() {
  68. let scenceTap = UITapGestureRecognizer(target: self, action: #selector(tapScenceBoxAction))
  69. scenceBox.addGestureRecognizer(scenceTap)
  70. let purifierTap = UITapGestureRecognizer(target: self, action: #selector(tapPurifierBoxAction))
  71. purifierBox.addGestureRecognizer(purifierTap)
  72. }
  73. @IBAction func preserveAction(_ sender: Any) {
  74. if let delegate = self.delegate{
  75. delegate.sceneModeViewSetting(roomId: self.roomId!, light: self.light, color: self.color, colorR: self.colorR, colorG: self.colorG, colorB: self.colorB, status: self.purifierStatus, level: self.purifierLevel)
  76. }
  77. }
  78. @IBAction func brightnessEndChange(_ sender: IHSlider) {
  79. self.light = "\(Int(sender.value))"
  80. log.debug(Int(sender.value))
  81. let bright = (sender.value)
  82. self.brightnessLabel.text = "\(Int(bright))%"
  83. }
  84. @IBAction func colorTempEndChange(_ sender: IHSlider) {
  85. log.debug(Int(sender.value))
  86. let index = Int(sender.value + 0.5)
  87. colorTemperatureSlider.setValue(Float(index), animated: false)
  88. self.colorTemperatureSliderLabel.text = "\(index * 300 + 3000)k"
  89. self.color = "\(index * 300 + 3000)"
  90. }
  91. @objc func tapScenceBoxAction() {
  92. log.debug(" tapScenceBoxAction")
  93. let titleArr = ["Custom mode","Reading mode","Full-on mode","Sleep mode","Relax mode","Work mode"]
  94. let pick = THScrollChooseView(question: titleArr, withDefaultDesc: titleArr.first)
  95. pick?.confirmBlock = {(selectedIndex) in
  96. log.debug(" title = \(titleArr[selectedIndex])")
  97. self.scenceModeLabel.text = titleArr[selectedIndex]
  98. if selectedIndex == 0{
  99. self.boxHeightConstraint.constant = 495
  100. self.BOX.isHidden = false
  101. }else{
  102. self.boxHeightConstraint.constant = 0
  103. self.BOX.isHidden = true
  104. }
  105. }
  106. pick?.show()
  107. }
  108. @objc func tapPurifierBoxAction() {
  109. log.debug(" tapPurifierBoxAction")
  110. let titleArr = ["Low","Middle","High"]
  111. let pick = THScrollChooseView(question: titleArr, withDefaultDesc: titleArr.first)
  112. pick?.confirmBlock = {(selectedIndex) in
  113. log.debug(" title = \(titleArr[selectedIndex])")
  114. self.purifierLevelLabel.text = titleArr[selectedIndex]
  115. self.purifierLevel = "\(selectedIndex + 1)"
  116. }
  117. pick?.show()
  118. }
  119. @IBAction func statusSwitch(_ sender: UIButton) {
  120. sender.isSelected = !sender.isSelected
  121. self.purifierStatus = sender.isSelected == true ? "1" : "0"
  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. }
  131. extension IHSceneModeView :IHColorAdjustmentViewDelegate{
  132. func colorAdjustmentViewChangedColor(red: Int, green: Int, blue: Int) {
  133. self.colorR = "\(red)"
  134. self.colorG = "\(green)"
  135. self.colorB = "\(blue)"
  136. }
  137. }