123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- //
- // 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<T>(ptr: UnsafeMutablePointer<T>) -> UnsafeMutablePointer<T> {
- return ptr
- }
- }
|