【Swift4】UIColorを#ffffffなどの16進数の文字列(Hex)で指定する方法

2020年8月29日

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になりますよ!