Edited at

SwiftでHexColor(#34495eみたいなやつ)

More than 3 years have passed since last update.

Objective-Cでよく使っていたUIColorカテゴリをswiftで書き換えたので載っけます。

Webなどでよく使われる16進表記の色をUIColorに変換します。

文字の先頭には「#」がついていてもいなくても変換することができる仕様です。

不正な文字列が来たら"invalid hex string"と出力され、whitecolorが返ってきます。

extension UIColor {

class func hexStr (var hexStr : NSString, var alpha : CGFloat) -> UIColor {
hexStr = hexStr.stringByReplacingOccurrencesOfString("#", withString: "")
let scanner = NSScanner(string: hexStr as String)
var color: UInt32 = 0
if scanner.scanHexInt(&color) {
let r = CGFloat((color & 0xFF0000) >> 16) / 255.0
let g = CGFloat((color & 0x00FF00) >> 8) / 255.0
let b = CGFloat(color & 0x0000FF) / 255.0
return UIColor(red:r,green:g,blue:b,alpha:alpha)
} else {
print("invalid hex string")
return UIColor.whiteColor();
}
}
}

利用する時は↓のように使って下さい。

UIColor.hexStr("34495e", alpha: 1)