Swift3.0-16進(jìn)制顏色轉(zhuǎn)換UIColor

參考原文: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)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末受葛,一起剝皮案震驚了整個濱河市题涨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌总滩,老刑警劉巖纲堵,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異闰渔,居然都是意外死亡席函,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進(jìn)店門冈涧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來茂附,“玉大人正蛙,你說我怎么就攤上這事∮” “怎么了乒验?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蒂阱。 經(jīng)常有香客問我锻全,道長,這世上最難降的妖魔是什么录煤? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任鳄厌,我火速辦了婚禮,結(jié)果婚禮上辐赞,老公的妹妹穿的比我還像新娘部翘。我一直安慰自己,他們只是感情好响委,可當(dāng)我...
    茶點故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布新思。 她就那樣靜靜地躺著,像睡著了一般赘风。 火紅的嫁衣襯著肌膚如雪夹囚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天邀窃,我揣著相機(jī)與錄音荸哟,去河邊找鬼。 笑死瞬捕,一個胖子當(dāng)著我的面吹牛鞍历,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播肪虎,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼劣砍,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了扇救?” 一聲冷哼從身側(cè)響起刑枝,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎迅腔,沒想到半個月后装畅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡沧烈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年掠兄,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡徽千,死狀恐怖苫费,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情双抽,我是刑警寧澤百框,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站牍汹,受9級特大地震影響铐维,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜慎菲,卻給世界環(huán)境...
    茶點故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一嫁蛇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧露该,春花似錦睬棚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至撵摆,卻和暖如春底靠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背特铝。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工暑中, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鲫剿。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓鳄逾,卻偏偏與公主長得像,于是被迫代替她去往敵國和親灵莲。 傳聞我的和親對象是個殘疾皇子严衬,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,922評論 2 361

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

  • 因為要結(jié)局swift3.0中引用snapKit的問題,看到一篇介紹Xcode8,swift3變化的文章,覺得很詳細(xì)...
    uniapp閱讀 4,429評論 0 12
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,334評論 25 707
  • 寫在前面 收到一些小伙伴的來信,覺得可能下邊沒有表達(dá)清楚笆呆,先把大家關(guān)心的要點在此進(jìn)行總結(jié),有興趣的可以看看下邊的研...
    光無影閱讀 11,064評論 40 61
  • 寫在前面 首先和大家分享一下學(xué)習(xí)新語法的技巧: 用Xcode8打開自己的Swift2.3的項目,選擇Edit->C...
    飄金閱讀 324評論 0 1
  • 網(wǎng)站運營中專題頁面的作用非常大粱挡,經(jīng)常能夠看見很多付費推廣都把專題頁面做落地頁赠幕,直接打開就能看見,足見一個好的專題頁...
    嘉良_6314閱讀 870評論 0 2