【Swift4】UIColorを#ffffffなどの16進数の文字列(Hex)で指定する方法
UIColorは赤、緑、青の3色を0〜1の値で指定して色々な色作ることができます。
しかし、残念なことに世にいるデザイナーは基本、0〜255の値で指定する方法か、#ffffffなどの16進数で表す方法しか知りません。
そこで、デザイナーに「#ffffff」で!と言われてもすぐに色が出せるように16進数で色を生成するプログラムを用意しているととても便利です。
UIColorにextensionできるので是非つかってみてください。
UIColorを#ffffffなどの16進数の文字列で指定する方法
extension UIColor {
class func hex ( string : String, alpha : CGFloat) -> UIColor {
let string_ = string.replacingOccurrences(of: "#", with: "")
let scanner = Scanner(string: string_ as String)
var color: UInt32 = 0
if scanner.scanHexInt32(&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 {
return UIColor.white;
}
}
}
UIColorをextensionします。
Extension.swiftみたいなファイルを作ってそこに記述しておくといいでしょう。
let whiteColor = UIColor.hex(string: "#ffffff", alpha: 1)
let blackColor = UIColor.hex(string: "000000", alpha: 1)
使い方も簡単です。
16進数には#をつけてもつけなくとも動作します。
alphaもついているので不透明度の調整もバッチリ行えます。
とても便利ですね!
じゃあ、0〜255で指定されたらどうするのかって?
128 / 255 のように割り算すば簡単に0〜1になりますよ!