swift5.3 UIColor使用十六进制颜色的方法实例
本文环境
- Xcode12
- Swift5.3
- iOS13
UI给出的颜色往往都是十六进制的,如#1a1a1a等,但是我们在iOS中是不能直接使用的,查询了一些代码,发现比较老旧,这里给出一个改进版本
使用Extension扩展
新建一个swift文件
比如我的string.swift,复制以下代码
//
//String.swift
//bestWhiteNoise
//
//Createdby袁超on2020/10/10.
//
importFoundation
importUIKit
extensionString{
///十六进制字符串颜色转为UIColor
///-Parameteralpha:透明度
funcuicolor(alpha:CGFloat=1.0)->UIColor{
//存储转换后的数值
varred:UInt64=0,green:UInt64=0,blue:UInt64=0
varhex=self
//如果传入的十六进制颜色有前缀,去掉前缀
ifhex.hasPrefix("0x")||hex.hasPrefix("0X"){
hex=String(hex[hex.index(hex.startIndex,offsetBy:2)...])
}elseifhex.hasPrefix("#"){
hex=String(hex[hex.index(hex.startIndex,offsetBy:1)...])
}
//如果传入的字符数量不足6位按照后边都为0处理,当然你也可以进行其它操作
ifhex.count<6{
for_in0..<6-hex.count{
hex+="0"
}
}
//分别进行转换
//红
Scanner(string:String(hex[..
使用
比如UI给的颜色是#5188e1,那么我们直接使用字符的扩展函数即可
"5188e1".uicolor()
如设置TabBarItem的字体颜色
item.setTitleTextAttributes([NSAttributedString.Key.foregroundColor:"5188e1".uicolor()],for:.selected)
uicolor函数也是在网上找到的,之前的函数在iOS13中,scanHexInt34方法被废弃,故此方法适配了iOS13
总结
到此这篇关于swift5.3UIColor使用十六进制颜色的文章就介绍到这了,更多相关swift5.3UIColor用十六进制颜色内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!