アプリの色定義に#colorLiteralを使う実装例

mono 
Swift・iOSコラム
3 min readSep 27, 2016

--

こんな感じに落ち着きました。

以下の記事で、#colorLiteralとは話がズレつつも、色定義をどうするか考える機会いただけたので、ちょっと見直しました。結果、@See_ku さんの定義の仕方と近い感じになりました。(僕はUIColorのextensionとしたので少し違いますが)

class var定義にしてたのは、標準UIColor群がそうなっていただけで、ちゃんとした意図無かったのですが、色々考慮すると、static let定義がベストかなと思いました。

  • アプリ用の色定義としてはオーバーライド可能である必要性は通常無い
  • コードが短く簡潔
  • ほぼ無視出来る範囲とはいえclass var定義より効率良い
  • ドキュメンテーションコメントで16進数カラーコード添えた方が親切

アプリ用の色定義としてはオーバーライド可能である必要性は通常無い

アプリ用の色定義ではなく、ライブラリでオーバーライド可能としたい場合はclass varにした方が良いケースもありそうです。

ドキュメンテーションコメントで16進数カラーコード添えた方が親切

逆にドキュメンテーションコメントに#colorLiteral入れて実装を16進数カラーコードにする案も考えたものの、Quick Help上ではプレーンテキスト表示なので微妙でした( ´・‿・`)

利用側からは、このように見えます。

Quick Helpの制約上、実際の色を確認するには定義に飛ぶ必要がありますが、それでもこれまでよりは直感的に色が分かって便利かなと思いました。依存ライブラリや自作関数なども一切不要です。

Xcode 8上での開発では意識しませんが、実際のテキストはこうなります。GitHubなどでも見た時も色は視覚的に分かりませんが、16進数カラーコードコメントを添えてあるので、問題無さそうです。

--

--