Swift - UIColor使用自定义的RGB配色

2020-06-29  本文已影响0人  小驴拉磨

1、比如 rgb 色值为 55、 186 、89 那么给 UIColor 设置里面要除以 255

UIColor(red: 55/255, green: 186/255, blue: 89/255, alpha: 0.5)

2、设置 16 进制颜色也同上

UIColor(red: 0x37/255, green: 0xba/255, blue: 0x46/255, alpha: 0.5)

对 UIColor 进行扩展

import UIKit
 
//UIColor扩展
extension UIColor {
     
    //使用rgb方式生成自定义颜色
    convenience init(_ r : CGFloat, _ g : CGFloat, _ b : CGFloat)
    {
        let red = r / 255.0
        let green = g / 255.0
        let blue = b / 255.0
        self.init(red: red, green: green, blue: blue, alpha: 1)
    }
     
    //使用rgba方式生成自定义颜色
    convenience init(_ r : CGFloat, _ g : CGFloat, _ b : CGFloat, _ a : CGFloat)
    {
        let red = r / 255.0
        let green = g / 255.0
        let blue = b / 255.0
        self.init(red: red, green: green, blue: blue, alpha: a)
    }
    //16进制生成自定义颜色
    class func hexColorWithAlpha(color: String, alpha:CGFloat) -> UIColor
    {
        var colorString = color.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines).uppercased()
        
        if colorString.count < 6 {
            return UIColor.clear
        }
        
        if colorString.hasPrefix("0x") {
            colorString = (colorString as NSString).substring(from: 2)
        }
        if colorString.hasPrefix("#") {
            colorString = (colorString as NSString).substring(from: 1)
        }
        
        if colorString.count < 6 {
            return UIColor.clear
        }
        
        var rang = NSRange()
        rang.location = 0
        rang.length = 2
        
        let rString = (colorString as NSString).substring(with: rang)
        rang.location = 2
        let gString = (colorString as NSString).substring(with: rang)
        rang.location = 4
        let bString = (colorString as NSString).substring(with: rang)
        
        var r:UInt64 = 0, g:UInt64 = 0,b: UInt64 = 0
        
        Scanner(string: rString).scanHexInt64(&r)
        Scanner(string: gString).scanHexInt64(&g)
        Scanner(string: bString).scanHexInt64(&b)
        
        return UIColor.init(CGFloat(r), CGFloat(g), CGFloat(b), alpha)
    }
}

这样我们初始化的时候就不用在手动除以 255 了。

//RGB
UIColor(55, 186, 8)
UIColor(0x37, 0xba, 0x46)
 
//RGBA
UIColor(55, 186, 8, 0.5)
UIColor(0x37, 0xba, 0x46, 0.5)

UIColor.hexColorWithAlpha(color: "#D4D5D6", alpha: 1.0)
上一篇下一篇

猜你喜欢

热点阅读