Swift 十六进制字符串转颜色
来源:互联网 发布:郑州java培训机构靠谱 编辑:程序博客网 时间:2024/05/16 04:56
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 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) 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 }
0 0
- Swift 十六进制字符串转颜色
- swift中十六进制字符串转颜色及颜色渐变
- 十六进制字符串方法获取颜色
- 从十六进制字符串获取颜色
- iOS 十六进制字符串获取颜色
- Android中十六进制颜色字符串转int的方法
- 十六进制颜色转UIColor
- 十六进制颜色转 UIColor
- 十六进制颜色转UIColor
- 十六进制颜色转UIColor
- 字符串转十六进制 十六进制转字符串
- iOS swift 代码控制十六进制颜色转换扩展
- 十六进制颜色表(转)
- css颜色 RGB转十六进制
- 十进制颜色转十六进制颜色信息
- iOS 十六进制颜色转RGB颜色
- 十六进制字符串转整形
- Delphi 字符串转十六进制
- solr应用
- README(MobileSafer)
- RunLoop简介一
- PHP : MySQL操作数据库 【 连接、建库、建表、增、删、改、查、关闭】
- 4层架构解代码耦合(图)
- Swift 十六进制字符串转颜色
- spring框架学习(二)依赖注入
- Apache Maven 入门篇(下)
- 适配器模式详解
- 侵犯隐私权的处罚与相关法律规定
- centos与windows的smb共享
- 关于学习积累
- C++string到char*的转换
- 堆