【SWIFT】一些簡單的顏色函數(shù)

有時候我們需要從一個16進制的顏色代碼(例如#fafcfe)獲得一個顏色對象,可以使用如下方法:

func hexColorString(_ color:String,alpha:Float=1.0)->UIColor{

var colorString=color.trimmingCharacters(in:.whitespacesAndNewlines).lowercased()

if colorString.characters.count<6{

return UIColor.clear

}

if colorString.hasPrefix("0x"){

colorString=colorString.replacingOccurrences(of: "0x", with: "")

}

else if colorString.hasPrefix("#"){

colorString=colorString.replacingOccurrences(of: "#", with: "")

}

if colorString.characters.count != 6{

return UIColor.clear

}

let colorStr=NSString(string:colorString)

var range=NSRange(location: 0,length: 2)

let redString=colorStr.substring(with: range)

range.location = 2

let greenString=colorStr.substring(with: range)

range.location = 4

let blueString=colorStr.substring(with: range)

var red:UInt32=0

var green:UInt32=0

var blue:UInt32=0

var success=Scanner(string: redString).scanHexInt32(&red)

if !success{

return UIColor.clear

}

success=Scanner(string: greenString).scanHexInt32(&green)

if !success{

return UIColor.clear

}

success=Scanner(string: blueString).scanHexInt32(&blue)

if !success{

return UIColor.clear

}

return UIColor(red:CGFloat(red)/255,green:CGFloat(green)/255,blue:CGFloat(blue)/255,alpha:CGFloat(alpha))

}

如果希望從r,g,b三原色獲得顏色對象則可以使用如下方法:

?func color(_ red:UInt8,green:UInt8,blue:UInt8,alpha:UInt8=0xff)->UIColor{

return UIColor(red:CGFloat(red)/255,green:CGFloat(green)/255,blue:CGFloat(blue)/255,alpha:CGFloat(alpha)/255)

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容