Swiftで色の指定を便利にするExtension
こんにちは、@Yuuです。
前回のSwiftで色を指定する方法の記事で、Swiftで色を指定する方法とその際の指定の仕方がめんどくさい!
(ง `ω´)۶
という事を書きました。
今回はその「めんどくさい」を解消する、色の指定を便利に・簡単にする事が出来るExtensionをご紹介したいと思います。
スポンサーリンク
解説を行う環境
今回僕が解説を行う環境です。
- OS:OS X Yosemite10.10.5
- Xcode:7.2
Xcodeのバージョンが7以降なのでSwift2での解説になります。
Swift(無印)でも書き方はほぼ一緒だと思いますが、違う場合はご了承下さい。
色の指定を便利にするExtension
前回の記事でSwiftで色を指定する際、RGBの値を「0~1.0」で指定する使用である事をご紹介しました。
例えば、デザイナーさんに「rgb(120,150,255)の色にして下さい」とか「hex値の"#8CA0DE"の色にして下さい」と指示を受けたとしたら、一々「0~255」の値を「0~1.0」使用の値に変換しないといけません。
うーん、これはめんどくさい・・
というわけで便利なExtensionの登場です!
以下2つのサイトを参考にさせて頂きました!
[swift]RGB値でUIColorを作成するextension - Qiita
UIColorを16進から生成 - Swiftサラリーマン
以下のコードがSwiftで色を管理するのを簡単にするExtensionです!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
import UIKit extension UIColor { class func rgb(r r: Int, g: Int, b: Int, alpha: CGFloat) -> UIColor{ return UIColor(red: CGFloat(r) / 255.0, green: CGFloat(g) / 255.0, blue: CGFloat(b) / 255.0, alpha: alpha) } class func hex (var hexStr : String, let alpha : CGFloat) -> UIColor { hexStr = hexStr.stringByReplacingOccurrencesOfString("#", withString: "") if hexStr.characters.count == 3 { var newHexStr = "" for c in hexStr.characters { newHexStr += "\(c)\(c)" } hexStr = newHexStr } 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を16進から生成 - Swiftサラリーマン)を参考に、hex値の指定方法の場合「#f00」のような3文字の指定も出来るようにしてみました。
マーカーをひいてある9〜15行目が、その3文字でも指定出来るようにする処理になっているので、要らない・使わないという人は削除しちゃって下さい。
このExtensionを実装する事で以下のような記述が可能になります。
1 2 3 4 5 6 7 |
UIColor.rgb(r: 120, g: 150, b: 255, alpha: 1.0) UIColor.rgb(r: 0, g: 255, b: 24, alpha: 0.2) UIColor.hex("#45fb4b", alpha: 1) UIColor.hex("#0fe", alpha: 1) UIColor.hex("b4b", alpha: 0.8) UIColor.hex("bb44bb", alpha: 0.8) |
hex値での指定の場合、"#"を付けても付けなくても処理が行えるのが便利!
これで色を指定するのが非常に楽になりましたね!
こちらのExtensionはGitHubに上げましたので、もしよろしければそちらからダウンロードして下さい。
meganedogYuu/UIColorExtension - GitHub
あとがき
いかがでしょう?
このExtensionを使用する事で、色を指定するのが簡単になった!と思って頂けたでしょうか?
今回は色を管理するUIColorクラスの拡張をご紹介しましたが、他にも様々なExtensionがあるので、興味がある人は調べてみると面白いExtensionが見つかると思いますよ!
ではでは
今回はこの辺で!ヽ(•̀ω•́ )ゝ✧