參考原文:http://www.reibang.com/p/345fa430e44
原樓主使用swift2.x 編寫,對于swift3.0 已不能正常使用,故此針對swift3.0語法寺旺,做出以下修改也切。
具體怎么新建文件,參考原文曾我。在這里不再重復(fù)步驟捧搞,只提供修改的內(nèi)容撵彻。謝謝
import UIKit
// MARK: - 給UIColor寫兩個類方法
extension UIColor {
/**
16進(jìn)制轉(zhuǎn)UIColor
- parameter hex: 16進(jìn)制顏色字符串
- returns: 轉(zhuǎn)換后的顏色
*/
class func ColorHex(hex: String) -> UIColor {
return proceesHex(hex: hex, alpha: 1.0)
}
/**
16進(jìn)制轉(zhuǎn)UIColor,
- parameter hex: 16進(jìn)制顏色字符串
- parameter alpha: 透明度
- returns: 轉(zhuǎn)換后的顏色
*/
class func ColorHexWithAlpha(hex: String, alpha: CGFloat) -> UIColor {
return proceesHex(hex: hex, alpha: alpha)
}
}
// MARK: - 主要邏輯
private func proceesHex(hex: String, alpha: CGFloat) -> UIColor{
/** 如果傳入的字符串為空 */
if hex.isEmpty {
return UIColor.clear
}
/**
結(jié)合swift3.0 語法实牡,修改后的邏輯實現(xiàn)
*/
/** 傳進(jìn)來的值。 去掉了可能包含的空格轴合、特殊字符创坞, 并且全部轉(zhuǎn)換為大寫 */
let set = CharacterSet.whitespacesAndNewlines
var hHex = hex.trimmingCharacters(in: set).uppercased()
/** 如果處理過后的字符串少于6位 */
if hHex.characters.count < 6 {
return UIColor.clear
}
/** 開頭是用0x開始的 */
if hHex.hasPrefix("0X") {
hHex = (hHex as NSString).substring(from: 2)
}
/** 開頭是以#開頭的 */
if hHex.hasPrefix("#") {
hHex = (hHex as NSString).substring(from: 1)
}
/** 開頭是以##開始的 */
if hHex.hasPrefix("##") {
hHex = (hHex as NSString).substring(from: 2)
}
/** 截取出來的有效長度是6位, 所以不是6位的直接返回 */
if hHex.characters.count != 6 {
return UIColor.clear
}
/** R G B */
var range = NSMakeRange(0, 2)
/** R */
let rHex = (hHex as NSString).substring(with: range)
/** G */
range.location = 2
let gHex = (hHex as NSString).substring(with: range)
/** B */
range.location = 4
let bHex = (hHex as NSString).substring(with: range)
/** 類型轉(zhuǎn)換 */
var r:CUnsignedInt = 0, g:CUnsignedInt = 0, b:CUnsignedInt = 0;
Scanner(string: rHex).scanHexInt32(&r)
Scanner(string: gHex).scanHexInt32(&g)
Scanner(string: bHex).scanHexInt32(&b)
return UIColor(red: CGFloat(r) / 255.0, green: CGFloat(g) / 255.0, blue: CGFloat(b) / 255.0, alpha: alpha)
}
使用方法同理:
view.backgroundColor = UIColor.ColorHex(hex: "#f39723")
view.backgroundColor = UIColor.ColorHexWithAlpha(hex: "#f39723", alpha: 0.7)