zoukankan      html  css  js  c++  java
  • 颜色框架Hue使用方法

    Hue地址

    如果有疑问或者想探讨iOS开发相关的技术,十分欢迎。

    1. cocoapods安装Hue

    pod "Hue"
    

    2. 导入框架

    import Hue
    

    3. 将十六进制数字变成对应的颜色值

    let color = UIColor.init(hex: "#DDDDDD")
    

    4. 颜色转颜色值

    let hex1 = UIColor.red.hex(true) /// 将颜色转为十六进制,前面有#号
    let hex2 = UIColor.red.hex(false) /// 将颜色转为十六进制,前面没有#号
    let red = UIColor.red.redComponent /// 获取颜色中红色的色值,0-1
    let green = UIColor.red.greenComponent /// 获取颜色中绿色的色值,0-1
    let blue = UIColor.red.blueComponent /// 获取颜色中蓝色的色值,0-1
    let alpla = UIColor.red.alphaComponent /// 获取颜色的透明度,0-1
    

    5. 区别颜色的深浅

    let isDark = UIColor.red.isDark /// 是否是暗色的
    let isWhite = UIColor.red.isWhite /// 是否是白色的,或者接近白色
    let isBlack = UIColor.red.isBlack /// 是否是黑色,或者接近黑色
    let isBlackOrWhite = UIColor.red.isBlackOrWhite /// 是否是白色或黑色,或者接近白色或黑色
    

    注意:这几个方法依赖于Hue以下方法internal func rgbComponents() -> [CGFloat],但是这个方法中的guard语法判断是有一点失误的,不知道是swift4.0更新的原因还是编写时的失误,let RGB = cgColor.components这个语句获取的RGB数组个数是4,[R,G,B,A],三基色与透明度,但是在这个方法中的guard判断中是根据RGB.count == 3判断的,这样就会导致这个方法返回值一直是[0,0,0],这样就会导致判断失误,总是在判断是否是黑色,解决方法是将RGB.count == 3改为RGB.count == 4

    6. 判断两个颜色是否类似(相近)

    /// 一种颜色是否不同于另一种颜色,有明显差异
    let isDistinctFrom = UIColor.red.isDistinctFrom(UIColor.red)
    
    /// 两种颜色形成对比,相差较大
    let isContrasting = UIColor.red.isContrastingWith(UIColor.red)
    

    7. 设置渐变颜色

    let gradient = [UIColor.red, UIColor.yellow, UIColor.blue,UIColor.green].gradient { (gra) -> CAGradientLayer in
        gra.frame = self.view.bounds /// 设置渐变的区域
        gra.locations = [0.2, 0.4, 0.6] /// 设置渐变颜色的分割线
        gra.startPoint = .init(x: 0, y: 0.5) /// 设置渐变颜色的起始位置(0,0)左上角到(1,1)右下角
        gra.endPoint = .init(x: 1, y: 0.5) /// 设置渐变颜色的结束位置(0,0)左上角到(1,1)右下角
        return gra
    }
    view.layer.addSublayer(gradient) /// 将渐变图层添加到视图上
    

    8. 颜色混合

    /// 给颜色增加指定色调与透明度
    ///
    /// - Parameters:
    ///   - hue: 需要增加的色调,不是最终的色调
    ///   - saturation: 需要增加的饱和度,不是最终的饱和度
    ///   - brightness: 需要增加的亮度,不是最终的亮度
    ///   - alpha: 需要增加的透明度,不是最终的透明度
    /// - Returns: 添加色调之后的颜色
    public func addHue(_ hue: CGFloat, saturation: CGFloat, brightness: CGFloat, alpha: CGFloat) -> UIColor
    
    /// 将一种颜色的色调增加到另一种颜色中,不包含透明度
    ///
    /// - Parameter color: 需要添加到另一种颜色中的颜色
    /// - Returns: 混合之后的颜色
    public func addHSB(color: UIColor) -> UIColor
    
    /// 将一种颜色的色调增加到另一种颜色中,包含透明度
    ///
    /// - Parameter color: 需要添加到另一种颜色中的颜色
    /// - Returns: 混合之后的颜色
    public func addHSBA(color: UIColor) -> UIColor
    
    /// 给颜色增加三基色与透明度
    ///
    /// - Parameters:
    ///   - red: 增加红色色值,并非最终的红色色值
    ///   - green: 增加绿色色值,并非最终的绿色色值
    ///   - blue: 增加蓝色色值,并非最终的蓝色色值
    ///   - alpha: 增加的透明度,并非最终的透明度
    /// - Returns: 增加三基色之后的颜色    
    public func addRed(_ red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat) -> UIColor
    
    /// 将一种颜色的色值增加到另一种颜色中,不包含透明度
    ///
    /// - Parameter color: 需要添加到另一种颜色中的颜色
    /// - Returns: 混合之后的颜色
    public func addRGB(color: UIColor) -> UIColor
    
    /// 将一种颜色的色值增加到另一种颜色中,包含透明度
    ///
    /// - Parameter color: 需要添加到另一种颜色中的颜色
    /// - Returns: 混合之后的颜色
    public func addRGBA(_ color: UIColor) -> UIColor
    

    9. 获取图片的相关颜色(总感觉不是太准)

    public func colors(_ scaleDownSize: CGSize? = nil) -> (background: UIColor, primary: UIColor, secondary: UIColor, detail: UIColor)
    
    /// 示例
    let colors = UIImage.init().colors() /// 获取相关颜色的元组
    let bgColor = colors.background /// 背景颜色
    let primary = colors.primary /// 主要颜色
    let secondary = colors.secondary /// 次要颜色
    let detail = colors.detail /// 细节颜色
    let color = colors.background.color(at: CGPoint.init(x: 0, y: 0)) /// 获取图片指定坐标位置的颜色
    
  • 相关阅读:
    实现treeview的动态加载
    sql server2000中使用convert来取得datetime数据类型样式(全)
    一道微软公司的面试题目的算法实现
    后台一行输入太多内容,使前台显示自动换行方法
    在js中刷新本页
    关于datediff函数的用法
    C#中StringBuilder类的使用(转)
    在字符串中使用引号("")等字符 需要用转义字符\ 例如
    常用的SQL和TSQL语句(一) (转)
    JS弹出窗口的运用与技巧(转)
  • 原文地址:https://www.cnblogs.com/zhanbaocheng/p/7794255.html
Copyright © 2011-2022 走看看