Swift 十六进制字符串转颜色

Swift 十六进制字符串转颜色,第1张

概述swift 3.0 语法有一定变化,相应字符串截取变化也不小,所以重写了一下取颜色的方法如下: func transferStringToColor(colorStr:String) -> UIColor { var color = UIColor.red var cStr : String = colorStr.trimmingChara

swift 3.0 语法有一定变化,相应字符串截取变化也不小,所以重写了一下取颜色的方法如下:

    func transferStringTocolor(colorStr:String) -> UIcolor {                var color = UIcolor.red        var cStr : String = colorStr.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines).uppercased()                if cStr.hasPrefix("#") {            let index = cStr.index(after: cStr.startIndex)            cStr = cStr.substring(from: index)        }        if cStr.characters.count != 6 {            return UIcolor.black        }        //两种不同截取字符串的方法        let rRange = cStr.startIndex ..< cStr.index(cStr.startIndex,offsetBy: 2)        let rStr = cStr.substring(with: rRange)                let gRange = cStr.index(cStr.startIndex,offsetBy: 2) ..< cStr.index(cStr.startIndex,offsetBy: 4)        let gStr = cStr.substring(with: gRange)                let bIndex = cStr.index(cStr.endindex,offsetBy: -2)        let bStr = cStr.substring(from: bIndex)                color = UIcolor.init(colorliteralRed: float(changetoInt(numStr: rStr)) / 255,green: float(changetoInt(numStr: gStr)) / 255,blue: float(changetoInt(numStr: bStr)) / 255,Alpha: 1)        return color    }}    func changetoInt(numStr:String) -> Int {        let str = numStr.uppercased()    var sum = 0    for i in str.utf8 {        //0-9 从48开始        sum = sum * 16 + Int(i) - 48        if i >= 65 {            //A~Z 从65开始,但初始值为10            sum -= 7        }    }    return sum}


当然,最好还是用Scanner来实现十六进制字符串转数字


 func transferStringTocolor(_ colorStr:String) -> UIcolor {                var color = UIcolor.red        var cStr : String = colorStr.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines).uppercased()                if cStr.hasPrefix("#") {            let index = cStr.index(after: cStr.startIndex)            cStr = cStr.substring(from: index)        }        if cStr.characters.count != 6 {            return UIcolor.black        }                let rRange = cStr.startIndex ..< cStr.index(cStr.startIndex,offsetBy: -2)        let bStr = cStr.substring(from: bIndex)                var r:CUnsignedInt = 0,g:CUnsignedInt = 0,b:CUnsignedInt = 0;        Scanner(string: rStr).scanHexInt32(&r)        Scanner(string: gStr).scanHexInt32(&g)        Scanner(string: bStr).scanHexInt32(&b)                color = UIcolor(red: CGfloat(r) / 255.0,green: CGfloat(g) / 255.0,blue: CGfloat(b) / 255.0,Alpha: CGfloat(1))                return color    }
总结

以上是内存溢出为你收集整理的Swift 十六进制字符串转颜色全部内容,希望文章能够帮你解决Swift 十六进制字符串转颜色所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1071776.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存