
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 十六进制字符串转颜色所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)