【初心者向け】Assets.xcassetsを理解して使う

【初心者向け】Assets.xcassetsを理解して使う

Table of Contents

登場以前

プロジェクトファイルに直接画像ファイルを登録していたため、チーム開発するとプロジェクトファイルの衝突が多発してた。

解像度別画像(x2)の管理が面倒で、x2版 x1版どちらのファイルをロードすればいいか分からなくなることもあった。

Asset Catalogのメリット

  • 画像追加によるプロジェクトファイルのコンフリクトがなくなる
  • デバイスサイズ毎の画像管理が分かりやすくなる
  • 起動イメージ, アプリアイコンも管理できる
  • あらゆるアセットデータが管理できる

Xcode10では次のアセットを管理できる。

使い方は簡単で+ボタンを押せば上記メニューが表示されるので、該当する種類を選べば追加される。

管理方法は名前になっており、例えば Image set で icon という名前があれば

UIImage(named: "icon")

でロードできる

加えて、Interface builder上でも選択できる

Image set

  • 解像度別画像管理
  • 画像スライス
  • 中心点変更

端末別解像度別で画像を分けれる

上記画像のように Image Set には Devices というプロパティがあり、デバイス毎にどの画像を使うのかを指定することができる。 指定がされていないDeviceはUniversalが使われる。

また 1x, 2x, 3x と端末の解像度毎に使われる画像も指定ができる。

画像スライス

画像スライス機能があり、画像をマスキングした部分を取り除いた画像をビルド生成してくれる。

生成された画像は次のようになる。 中心点の編集は活用ケースは多くありそうだが、スライスはいまいち。

スライス情報はAttribute Inspectorの一番下で確認できる

スライス軸は縦,横,両方がある。 取り消す場合はNoneを選ぶと解除できる。

Color Set

Color set とは色のセットであり、コードとInterface Builder で色を統一できる。

例えば HogeColor という名前だったら Interface Builder 上では次のように指定が出来る

Color set でアプリで使うカラー一覧を定義しておくことで、色の変更がUIを触らずAsset Catalogで完結する。
これも別ファイルとなるので、色変更によるxibやstoryboardの改修衝突が発生しない。

コード上では次のように UIColor(named:)で指定できる

label.textColor = UIColor(named: "HogeColor")

Appearances で Dark/Light ごとに色を変えれる

iOS13からDarkモードが追加されたが、DarkかLightによって使う色を変えることも可能となっている。

High Contrastでコントラストを上げた環境が追加されるはず

こちら試したがうまく動かず。もしかしたら何か間違えているのかもしれない。

Data Set

画像だけでなく音楽データやテキストデータといったリソースなら何でも管理できるようになった。 登録は Data set を選び、Drag and Dropで登録するだけ。

利用する場合は、次のコードで使うことができる。
Nugaという名前で中身にテキストファイルを入れてある。

if let asset = NSDataAsset(name: "Nuga") {
    let text = String(data: asset.data, encoding: .utf8)
    print(text)
}

アセットを有効活用しよう

以上のように様々なデータを集合管理することができて、管理方法も変更がコンフリクトしにくいファイル設計になっている。

そしてここで定義したデータがInterface Builderで使えるなど連携が出来ることから、使わないメリットはないので積極的にここを使っていくべきです。

このエントリーをはてなブックマークに追加