アプリ開発で色情報を管理する

こんにちは、daihaseです。今日はSwiftネタを。
アプリ開発をしていて、背景の色だったりタイトルの色だったり、皆さまこの辺どんな風に管理していますでしょうか。

例えば背景の色を変える、といった場合デフォルトだと以下のやり方になりますね。

初期の頃はかくいう私もこういうのを各ファイルにとにかく直書きしていました。
ただ、ある程度規模の大きいアプリとかになると当然同じ色を毎回宣言することになったりして、それが変更になった場合関連するファイル全てに修正が入るなど相当手間です。

と、まぁ普通に仕事で開発をされてる方なんかだとこの辺ベタで記述してるところなんか絶対ないとは思いますが、個人とか趣味でやられてる方はうまいまとめ方がわからないという方もいるかなと思い、今回1例を紹介してみます。

例えばSketchPhotoshopなどのツールでアプリのワイヤーなどを作成していて、デザイナーさんが16進数で色情報を明記してくれることは多いかと思います。

アプリでもその情報をそのまま活用出来るといいですよね。

というわけで、Swiftでは上記例のようにRed、Blue、Greenと数値を指定する方法があるのですが16進数を指定して色を取得する方法がないため、それを用意してやります。

ここではUIColor+Ex.swiftといったファイルを新たに作成します。

細かい説明は省きますがhexStringというのがいわば16進数を表す文字列で、これを元にUIColorを拡張したイニシャライザを用いて色情報を生成するイメージです。

このファイルがあれば、view.backgroundColor = UIColor(hexString: “#FFFFFF”, alpha: 1.0) などと記述してやれば、そのまま16進数指定で色情報をセット出来るのですが、これだとまだ各ファイルにベタ書きになってしまいますね。

プロジェクト内で色情報を一元管理するためのファイルを作成しましょう。

boxColor()だったら箱の色を担当するメソッドですね。mainBackgroundColor()は背景色を担当。こんな感じにこのファイルにどんどん色情報を追記していく形になります。

ではViewController.swiftで実際に呼び出してセットしてみましょう。

こんな感じになりますね。実行してみましょう。

ちゃんと背景には青を、中央のBoxには赤をセット出来てますね。

これなら例えば現場で後から「やっぱり背景は黄色にしてー」って言われても色情報を管理しているColorPalette.swiftを見にいってそこの16進数を変更してやれば、セットしてる箇所も一斉にかわるので変更に強い設計と言えるんではないでしょうか。

複数人で開発してる現場なんかでは、この色情報に限らずこうした設計は当たり前のように行われているので、個人で開発するような小規模なものでも最初からこうした管理用のクラスは用意しておけば後々開発も楽になってくるので良いかと思います。

それでは良い開発ライフを〜

スポンサーリンク
336 x 280 レクタングル(大)
336 x 280 レクタングル(大)