// // IHColorAdjustmentView.swift // Inhealth // // Created by weclouds on 2019/12/14. // Copyright © 2019 weclouds. All rights reserved. // import UIKit struct ColorStruct { var Red : Int? = 0 var Green : Int? = 0 var Blue : Int? = 0 } protocol IHColorAdjustmentViewDelegate : NSObjectProtocol{ func colorAdjustmentViewChangedColor(red:Int,green : Int,blue: Int) } class IHColorAdjustmentView: UIView { weak var delegate: IHColorAdjustmentViewDelegate? var colorStruct :ColorStruct?{ didSet{ if var color = self.colorStruct { if color.Red! > 255 { color.Red = 255 } if color.Green! > 255 { color.Green = 255 } if color.Blue! > 255 { color.Blue = 255 } self.rLabel.text = "\(color.Red!)" self.gLabel.text = "\(color.Green!)" self.bLabel.text = "\(color.Blue!)" let red = CGFloat(color.Red!) / 255 let green = CGFloat(color.Green!) / 255 let blue = CGFloat(color.Blue!) / 255 self.curColor = UIColor(red: red, green: green, blue: blue, alpha: 1) preColor = self.curColor _fill(preColor!) isTouchColorSquare = false isTouchColorBarPicker = false } } } var isTouchColorSquare = false var isTouchColorBarPicker = false //默认红色 fileprivate let default_color = UIColor.red var colorPickerBlock:((CGFloat,CGFloat,CGFloat)->Void)? @IBOutlet weak var ColorSquareView: DivoomColorSquareView! //色块 @IBOutlet weak var ColorBarPickerView: DivoomColorBarPickerView! //滑动条 @IBOutlet weak var rLabel: UILabel! @IBOutlet weak var gLabel: UILabel! @IBOutlet weak var bLabel: UILabel! /// 上一次的颜色 //默认红色 var preColor : UIColor? = .red ///当前颜色 var curColor : UIColor? = .red ///屏幕比例 private var _scaling :CGFloat? override func awakeFromNib() { super.awakeFromNib() log.debug("IHColorAdjustmentView -- awakeFromNib") setupView() } func setupView() { _scaling = UIScreen.main.bounds.size.width / 375 //默认红色 eventConfig() } ///配置事件 private func eventConfig() { // log.debug("eventConfig配置事件") // barpickView回调 self.ColorBarPickerView.valueChangedBlock = { (hvalue) in self.ColorSquareView.hvalue = hvalue // log.debug("hvalue - \(hvalue) ") } self.ColorBarPickerView.touchEnddBlock = { // log.debug("点击了滑动条") self.isTouchColorSquare = false self.isTouchColorBarPicker = true } //suiareView回调 self.ColorSquareView.colorChangedBlock = { (color) in self.curColor = color //当前颜色 let coms = color.cgColor.components var r ,g,b : Int //考虑灰度情况 if coms?.count == 2 { r = Int((coms?.first)! * CGFloat(255)) g = Int((coms?.first)! * CGFloat(255)) b = Int((coms?.first)! * CGFloat(255)) }else{ r = Int((coms?[0])! * CGFloat(255)) g = Int((coms?[1])! * CGFloat(255)) b = Int((coms?[2])! * CGFloat(255)) } self.rLabel.text = "\(r)" self.gLabel.text = "\(g)" self.bLabel.text = "\(b)" //log.debug("色块 r - \(r) - g - \(g) - b - \(b) ") // log.debug("isTouchColorSquare - \(self.isTouchColorSquare) --- isTouchColorBarPicker - \(self.isTouchColorBarPicker) ") if self.isTouchColorSquare == true || self.isTouchColorBarPicker == true { if let delegate = self.delegate { delegate.colorAdjustmentViewChangedColor(red: r, green: g , blue: b) } } } //触摸 self.ColorSquareView.touchColorEndBlock = { //log.debug("点击了色块") self.isTouchColorSquare = true self.isTouchColorBarPicker = false } } //填充颜色 private func _fill(_ color :UIColor){ var r : Float = 0 var g : Float = 0 var b : Float = 0 var a : Float = 0 var h : Float = 0 var s : Float = 0 var v : Float = 0 let comp = color.cgColor.components r = Float(comp![0]) g = Float(comp![1]) b = Float(comp![2]) a = Float(comp![3]) RGBToHSV(r, g, b, &h, &s, &v, true) //调用c方法 自动转换 ColorBarPickerView.hvalue = CGFloat(h) ColorSquareView.hvalue = CGFloat(h) ColorSquareView.svvalue = CGPoint(x: CGFloat(s), y: CGFloat(v)) // var h: CGFloat = 0 // var s: CGFloat = 0 // var b: CGFloat = 0 // var a: CGFloat = 0 // color.getHue(&h, saturation: &s, brightness: &b, alpha: &a) } func getMutablePointer(ptr: UnsafeMutablePointer) -> UnsafeMutablePointer { return ptr } }