Swift3.0-16進位制顏色轉換UIColor
參考原文:http://www.jianshu.com/p/345fa430e44
原樓主使用swift2.x 編寫,對於swift3.0 已不能正常使用,故此針對swift3.0語法,做出以下修改。
具體怎麼新建檔案,參考原文。在這裡不再重複步驟,只提供修改的內容。謝謝
import UIKit
// MARK: - 給UIColor寫兩個類方法
extension UIColor {
/**
16進位制轉UIColor
- parameter hex: 16進位制顏色字串
- returns: 轉換後的顏色
*/
class func ColorHex(hex: String) -> UIColor {
return proceesHex(hex: hex, alpha: 1.0)
}
/**
16進位制轉UIColor,
- parameter hex: 16進位制顏色字串
- parameter alpha: 透明度
- returns: 轉換後的顏色
*/
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
}
/**
結合swift3.0 語法,修改後的邏輯實現
*/
/** 傳進來的值。 去掉了可能包含的空格、特殊字元, 並且全部轉換為大寫 */
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)
/** 型別轉換 */
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)
相關文章
- UIColor 自定義 16進位制顏色UI
- UIColor 轉成 Hex 16進位制色值UI
- JavaScript RGB轉換成16進位制顏色JavaScript
- jQuery顏色值轉換為十六進位制形式jQuery
- JavaScript 十六進位制顏色和RGB顏色值的相互轉換JavaScript
- iOS 常用RGB十六進位制顏色轉換方法iOS
- javascriptRGB顏色轉換到16進位制詳解JavaScript
- RGB顏色與16進位制顏色的換算方法
- 十六進位制和RGB顏色格式的相互轉換
- 將十六進位制顏色值轉換為RGB顏色值程式碼例項
- js實現的十六進位制顏色和RGB顏色值的相互轉換JS
- [顏色進位制轉換]js實現rgb和hex的相互轉換JS
- 十六進位制顏色轉換為RGB程式碼例項
- 十六進位制顏色值簡寫
- JavaScript 生成十六進位制顏色值JavaScript
- 【進位制轉換】十進位制與十六進位制相互轉換方法
- IOS 關於16進位制轉顏色 的設定iOS
- Qt進位制轉換(十進位制轉十六進位制)QT
- JavaScript 進位制轉換(2進位制、8進位制、10進位制、16進位制之間的轉換)JavaScript
- 正則提取十六進位制顏色值
- 【譯】CSS 十六進位制顏色揭祕CSS
- 進位制轉換
- 顏色轉換
- 十六進位制轉換為八進位制
- 十六進位制轉換為十進位制
- 十六進位制顏色字串轉換成Color在Silverlight中的實現字串
- 十六進位制顏色透明度對照表
- 匹配十六進位制顏色正規表示式
- 進位制之間的轉換之“十六進位制 轉 十進位制 轉 二進位制 方案”
- 二進位制轉十進位制快速轉換方法
- lua之m進位制轉換為n進位制-任意進位制轉換演算法演算法
- 二進位制,八進位制,十進位制,十六進位制的相互轉換
- JavaScript 進位制轉換JavaScript
- 1.5進位制轉換
- 進位制的轉換
- JavaScript十進位制轉換為二進位制JavaScript
- shell 中轉換16進位制10進位制
- Oracle二進位制與十進位制轉換Oracle