// // IHSceneModeView.swift // Inhealth // // Created by weclouds on 2020/3/7. // Copyright © 2020 weclouds. All rights reserved. // import UIKit protocol IHSceneModeViewDelegate : NSObjectProtocol{ func sceneModeViewSetting(roomId:String,light:String?,color:String?,colorR:String?,colorG:String?,colorB:String?,status:String?,level:String?) } class IHSceneModeView: UIView { var delegate : IHSceneModeViewDelegate? var roomId:String? private var light:String? = "25" private var color:String? = "5" private var colorR:String? = "0" private var colorG:String? = "0" private var colorB:String? = "0" var purifierStatus: String? = "0" var purifierLevel:String? = "1" @IBOutlet weak var BOX: UIView! @IBOutlet weak var boxHeightConstraint: NSLayoutConstraint! @IBOutlet weak var brightnessLabel: UILabel! @IBOutlet weak var brightnessSlider: IHSlider! @IBOutlet weak var colorTemperatureSlider: IHSlider! @IBOutlet weak var colorTemperatureSliderLabel: UILabel! @IBOutlet weak var scenceBox: UIView! @IBOutlet weak var scenceModeLabel: UILabel! @IBOutlet weak var purifierBox: UIView! @IBOutlet weak var purifierLevelLabel: UILabel! @IBOutlet weak var exchangeSwitch: UIButton! @IBOutlet weak var ColorBoxView: UIView! 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() setupView() addGesture() } override func layoutSubviews() { super.layoutSubviews() colorAdjustmentView.frame = ColorBoxView.bounds } ///设置子视图 func setupView() { ColorBoxView.addSubview(colorAdjustmentView) brightnessSlider.minimumValue = 0 brightnessSlider.maximumValue = 100 colorTemperatureSlider.minimumValue = 0 colorTemperatureSlider.maximumValue = 10 brightnessSlider.value = 25 colorTemperatureSlider.value = 5 brightnessLabel.text = "50%" colorTemperatureSliderLabel.text = "4500k" let image1 = originImage(UIImage(named: "yellowThumb")!, scaleToSize: CGSize(width: 20, height: 20)) colorTemperatureSlider.setThumbImage(image1, for: .normal) colorTemperatureSlider.setThumbImage(image1, for: .highlighted) let image2 = originImage(UIImage(named: "greenThumb")!, scaleToSize: CGSize(width: 20, height: 20)) brightnessSlider.setThumbImage(image2, for: .normal) brightnessSlider.setThumbImage(image2, for: .highlighted) } ///添加点击手势 func addGesture() { let scenceTap = UITapGestureRecognizer(target: self, action: #selector(tapScenceBoxAction)) scenceBox.addGestureRecognizer(scenceTap) let purifierTap = UITapGestureRecognizer(target: self, action: #selector(tapPurifierBoxAction)) purifierBox.addGestureRecognizer(purifierTap) } @IBAction func preserveAction(_ sender: Any) { if let delegate = self.delegate{ 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) } } @IBAction func brightnessEndChange(_ sender: IHSlider) { self.light = "\(Int(sender.value))" log.debug(Int(sender.value)) let bright = (sender.value) self.brightnessLabel.text = "\(Int(bright))%" } @IBAction func colorTempEndChange(_ sender: IHSlider) { log.debug(Int(sender.value)) let index = Int(sender.value + 0.5) colorTemperatureSlider.setValue(Float(index), animated: false) self.colorTemperatureSliderLabel.text = "\(index * 300 + 3000)k" self.color = "\(index * 300 + 3000)" } @objc func tapScenceBoxAction() { log.debug(" tapScenceBoxAction") let titleArr = ["Custom mode","Reading mode","Full-on mode","Sleep mode","Relax mode","Work mode"] let pick = THScrollChooseView(question: titleArr, withDefaultDesc: titleArr.first) pick?.confirmBlock = {(selectedIndex) in log.debug(" title = \(titleArr[selectedIndex])") self.scenceModeLabel.text = titleArr[selectedIndex] if selectedIndex == 0{ self.boxHeightConstraint.constant = 495 self.BOX.isHidden = false }else{ self.boxHeightConstraint.constant = 0 self.BOX.isHidden = true } } pick?.show() } @objc func tapPurifierBoxAction() { log.debug(" tapPurifierBoxAction") let titleArr = ["Low","Middle","High"] let pick = THScrollChooseView(question: titleArr, withDefaultDesc: titleArr.first) pick?.confirmBlock = {(selectedIndex) in log.debug(" title = \(titleArr[selectedIndex])") self.purifierLevelLabel.text = titleArr[selectedIndex] self.purifierLevel = "\(selectedIndex + 1)" } pick?.show() } @IBAction func statusSwitch(_ sender: UIButton) { sender.isSelected = !sender.isSelected self.purifierStatus = sender.isSelected == true ? "1" : "0" } 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 IHSceneModeView :IHColorAdjustmentViewDelegate{ func colorAdjustmentViewChangedColor(red: Int, green: Int, blue: Int) { self.colorR = "\(red)" self.colorG = "\(green)" self.colorB = "\(blue)" } }