iOS技术专题iOS开发

Swift 4 十六进制转颜色,使用颜色生成图片方法

2017-03-20  本文已影响181人  superDg

将16进制的颜色值转换成UIColor对象
@para:
hexString: 生成颜色对象的16进制字符串
alpha:颜色的透明度,默认1.0
@return 返回生成的UIColor对象

extension UIColor {
    public class func color(hexString: String, alpha: CGFloat? = 1.0) -> UIColor {
        
        var cString = hexString.trimmingCharacters(in:.whitespacesAndNewlines).uppercased()
        if (cString.hasPrefix("#")) {
//            cString = cString[(from: cString.index(after: cString.startIndex))
           cString = String(cString[cString.index(after: cString.startIndex)..<cString.endIndex])

        }
        if (cString.count != 6) {
            return UIColor.clear
        }
//        let rString = cString.substring(to: cString.index(cString.startIndex, offsetBy: 2))
        let rString = cString[..<cString.index(cString.startIndex, offsetBy: 2)]
//        let gString = cString.substring(with: cString.index(cString.startIndex, offsetBy: 2)..<cString.index(cString.startIndex, offsetBy: 4))
        let gString = cString[cString.index(cString.startIndex, offsetBy: 2)..<cString.index(cString.startIndex, offsetBy: 4)]

//        let bString = cString.substring(from: cString.index(cString.endIndex, offsetBy: -2))
        let bString = cString[cString.index(cString.endIndex, offsetBy: -2)..<cString.endIndex]

        var r:CUnsignedInt = 0, g:CUnsignedInt = 0, b:CUnsignedInt = 0;
        Scanner(string: String(rString)).scanHexInt32(&r)
        Scanner(string: String(gString)).scanHexInt32(&g)
        Scanner(string: String(bString)).scanHexInt32(&b)
        return UIColor(red: CGFloat(r) / 255.0, green: CGFloat(g) / 255.0, blue: CGFloat(b) / 255.0, alpha: alpha!)
    }
    
}

使用颜色值生成图片
@para:
color: 生成图片的颜色的字符串
size:生成图片的大小
@return 返回生成的Image对象

public class func createImage(colorString: String, size: CGSize) -> UIImage? {
    
    var rect = CGRect(origin: CGPoint.zero, size: size)
    let co = color(hexString: colorString)
    UIGraphicsBeginImageContext(size)
    defer {
        UIGraphicsEndImageContext()
    }
    let context = UIGraphicsGetCurrentContext()
    context?.setFillColor(co.cgColor)
    context?.fill(rect)
    let image = UIGraphicsGetImageFromCurrentImageContext()
    return image
}

使用颜色值生成图片
@para:
color: 生成图片的颜色
size:生成图片的大小
@return 返回生成的Image对象

public class func createImage(color: UIColor, size: CGSize) -> UIImage? {
    
    var rect = CGRect(origin: CGPoint.zero, size: size)
    UIGraphicsBeginImageContext(size)
    defer {
        UIGraphicsEndImageContext()
    }
    let context = UIGraphicsGetCurrentContext()
    context?.setFillColor(color.cgColor)
    context?.fill(rect)
    let image = UIGraphicsGetImageFromCurrentImageContext()
    return image
}
上一篇下一篇

猜你喜欢

热点阅读