// // IHRoomLightColorCell.swift // Inhealth // // Created by weclouds on 2019/12/16. // Copyright © 2019 weclouds. All rights reserved. // import UIKit let kNotificationIHRoomLightColorCellChangeSwitchStatus = "kNotificationIHRoomLightColorCellChangeSwitchStatus" protocol IHRoomLightColorCellDelegate : NSObjectProtocol{ //调节亮度值 func adjustBrightness(_ light :Int) //调节色温 func adjustColorTemperature(_ color:Int) //调节颜色 func adjustColor(_ red:Int,green:Int,blue:Int) } class IHRoomLightColorCell: UITableViewCell { var switchStatus :String? = "1" weak var delegate: IHRoomLightColorCellDelegate? var lightId :String? var brightness :Int?{ didSet{ if let brightness = self.brightness { // 0 ~ 50 // 3/ 50 * 100 let value : Float = Float(brightness) self.brightLabel.text = "\(Int(value))%" brightSlider.value = Float(brightness) } } } var color :Int?{ didSet{ if let color = self.color { self.colorTempLabel.text = "\(color)k" colorTempSlider.value = Float((color - 3000) / 300 ) } } } var colorStruct :ColorStruct?{ didSet{ colorAdjustmentView.colorStruct = self.colorStruct } } var model :String?{ didSet{ if let model = self.model { if model == "0" { self.wecl10Box.isHidden = false self.tempColorBox.isHidden = true self.colorBox.isHidden = true self.wecl20Box.isHidden = true }else if model == "1"{ self.tempColorBox.isHidden = false self.wecl20Box.isHidden = false self.wecl10Box.isHidden = true self.colorBox.isHidden = true }else{ self.tempColorBox.isHidden = false self.colorBox.isHidden = false self.wecl10Box.isHidden = true self.wecl20Box.isHidden = true } } } } var colorR :Int? //色温 @IBOutlet weak var tempColorBox: UIView! //we_cl10 @IBOutlet weak var wecl10Box: UIView! //we_cl20 @IBOutlet weak var wecl20Box: UIView! @IBOutlet weak var colorBox: UIView! @IBOutlet weak var brightLabel: UILabel! @IBOutlet weak var colorTempLabel: UILabel! @IBOutlet weak var brightSlider: IHSlider! @IBOutlet weak var colorTempSlider: IHSlider! lazy var colorAdjustmentView: IHColorAdjustmentView = { let view = Bundle.main.loadNibNamed("IHColorAdjustmentView", owner: nil, options: nil)?.first as! IHColorAdjustmentView view.delegate = self return view }() override func awakeFromNib() { super.awakeFromNib() // Initialization code NotificationCenter.default.addObserver(self, selector: #selector(switchStatusNotify), name: NSNotification.Name(kNotificationIHRoomLightColorCellChangeSwitchStatus), object: nil) createUI() } deinit { NotificationCenter.default.removeObserver(self) } override func layoutSubviews() { super.layoutSubviews() colorAdjustmentView.frame = colorBox.bounds } @objc func switchStatusNotify(_ notify:Notification) { let status = notify.object as! String self.switchStatus = status } func createUI() { colorBox.addSubview(colorAdjustmentView) brightSlider.isContinuous = true //设置了连续变化 colorTempSlider.isContinuous = true brightSlider.minimumValue = 0 brightSlider.maximumValue = 100 colorTempSlider.minimumValue = 0 colorTempSlider.maximumValue = 10 let image1 = originImage(UIImage(named: "yellowThumb")!, scaleToSize: CGSize(width: 20, height: 20)) colorTempSlider.setThumbImage(image1, for: .normal) colorTempSlider.setThumbImage(image1, for: .highlighted) let image2 = originImage(UIImage(named: "greenThumb")!, scaleToSize: CGSize(width: 20, height: 20)) brightSlider.setThumbImage(image2, for: .normal) brightSlider.setThumbImage(image2, for: .highlighted) } override func setSelected(_ selected: Bool, animated: Bool) { super.setSelected(selected, animated: animated) // Configure the view for the selected state } @IBAction func brightAction(_ sender: UISlider) { if self.switchStatus == "0" { g_showHUD("此灯已关") //self.brightSlider.value = 0 return } let bright = (sender.value ) let brightness = Int(bright ) let value = Int(sender.value) log.debug("value - \(value) --- brightness - \(brightness)") if let delegate = self.delegate { delegate.adjustBrightness(value) } } @IBAction func colorTempratureAction(_ sender: UISlider) { if self.switchStatus == "0" { g_showHUD("此灯已关") // self.colorTempSlider.value = 0 return } let index = Int(sender.value + 0.5) let value = Int(index * 300) + 3000 log.debug("最终值 --- \(value)") if let delegate = self.delegate { delegate.adjustColorTemperature(value) } } @IBAction func colorValueChange(_ sender: UISlider) { //let value = sender.value let index = Int(sender.value + 0.5) colorTempSlider.setValue(Float(index), animated: false) self.colorTempLabel.text = "\(index * 300 + 3000)k" } @IBAction func brightValueChange(_ sender: UISlider) { let bright = (sender.value ) self.brightLabel.text = "\(Int(bright))%" } private func originImage(_ image:UIImage, scaleToSize size:CGSize) -> UIImage { UIGraphicsBeginImageContext(size) image.draw(in: CGRect(x: 0, y: 0, width: size.width, height: size.height)) let scaleImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return scaleImage! } } extension IHRoomLightColorCell:IHColorAdjustmentViewDelegate{ func colorAdjustmentViewChangedColor(red: Int, green: Int, blue: Int) { if self.switchStatus == "0" { g_showHUD("此灯已关") // colorAdjustmentView.colorStruct = ColorStruct(Red: 0, Green: 0, Blue: 0) return } if let delegete = self.delegate { delegete.adjustColor(red, green: green, blue: blue) } } }