Xcodeの画像、色リテラルを使う

画像、色リテラルとは

名前の通り画像や色をリテラルとして扱えるようにしたもの。Xocde8からの機能だが使っておらず、最近使い始めたので紹介する。 f:id:culumn:20180211221647p:plain

画像リテラル

アセットに登録した画像名をタイプすると、その画像をプレビューしたリテラルが補完に出てくる。これを選択することで画像リテラルとして使えるようになる。 f:id:culumn:20180211214722p:plain

メリット

  • コード上から使う画像を確認することができる。今までだと以下のようなコードで画像名を指定するだけだったので、当然画像をコード上から確認できなかった。また、画像名のタイポも防ぐことができる。
let image = UIImage(named: "MyLogo")
  • 正直これを一番推したくて、実は画像リテラルUIImage型でnilチェックする必要がない。上の画像名を指定するコードのimageUIImage?でオプショナル型である。

デメリット

  • 画像によってはリテラルとして見えにくい。画像の色合いやサイズがあるので、これはしかたない。

リテラル

リテラルColorまでタイプすると補完で出てくるのでそれを選択する。 f:id:culumn:20180211221824p:plain それからそのリテラルをダブルクリックで展開し、色を指定する。 f:id:culumn:20180211222145p:plain

メリット

  • こちらも同様だがコード上から使う色を確認することができる。また、下のようなコードに比べればタイプ数が減る。
view.backgroundColor = UIColor(red: redColor, green: greenColor, blue: blueColor, alpha: 1.0)

デメリット

  • 個人的にはないと思う。

まとめ

最近ではリソースマネージャーライブラリとしてはR.swiftが優秀で使っているが、色や画像に関してはリテラルを使ったほうが良いと感じた。個人的にはもちろんStoryboardから設定できるのであれば設定した方がコード数も減って良いと思う。

おまけ

もちろんこのリテラル機能はXcode独自のものであり、他のエディタからこのようには見えない。例えば、一番最初の画像にあるコードはこのような感じで記述されている。

view.backgroundColor = #colorLiteral(red: 0.1450980392, green: 0.5490196078, blue: 0.6980392157, alpha: 1)
logoImageView.image = #imageLiteral(resourceName: "MyLogo")