2014.11.11   |   iOS

UIColorを16進数のRGBで指定する

iOS開発において、Webでよく利用されている#ff0000みたいな16進のRGBで指定する方法。

extension UIColor {
    convenience init(rgb: UInt) {
        self.init(
            red: CGFloat((rgb & 0xFF0000) >> 16) / 255.0,
            green: CGFloat((rgb & 0x00FF00) >> 8) / 255.0,
            blue: CGFloat(rgb & 0x0000FF) / 255.0,
            alpha: CGFloat(1.0)
        )
    }
}

Swiftだとextensionというのを利用することで既存クラスを簡単に拡張できるみたいです。
上のソースをプロジェクト内のSwiftファイルに書いておけば動きます。

使い方は

view.backgroundColor = UIColor(rgb: 0x209624)

みたいに、UIColorのコンストラクタの引数にrgbが追加されているので、
ここに16進数で色を指定してあげればOKです。
ちょっと加工すれば文字列から指定だとか、
アルファ(不透明度)を付けて指定だとかも出来ますね。
文字列よりHEXの引数のほうが若干ながらコンパイルでのエラー検出
([0-9a-f]以外の文字が入り込まない)が可能なのでこのままのほうが便利そうです。

ソース元

StackOverFlow: How to use UIColorFromRGB value in Swift