jarinosuke blog

about software engineering, mostly about iOS

Asset Catalog の AppIcon を使って複数ターゲットで出し分ける

Asset Catalog 以前

Asset Catalog が出るまでは、アプリのアイコンをターゲット毎に出し分ける際は

以前に僕が書いた

アプリの情報をアイコンにオーバーレイさせる方法

と同じ要領で、ビルド後のスクリプトを用いてターゲット毎に用意された画像を適宜配置する必要がありました。

Asset Catalog 以後

Xcode 5 から Asset Catalog という画像管理に便利な機能が追加されました。

Xcode 5 で新しくプロジェクトを作成すると、Images.xcassets というフォルダがデフォルトで作成されます。

内部には AppIcon と LaunchImage という Image Set があり、これらに画像を適用するといった具合です。

画像の slicing を直感的に指定できたり、AppIcon も iOS/iPad 毎、iOS のバージョン毎に指定できたりと便利です。

Asset Catalog を用いたアイコン出し分け

では上記の AppIcon や Launch Image を出し分けるかという肝心な所ですが、

Build Settings を覗くと、 以下の項目がある事に気付くかと思います。

Asset Catalog Compiler - Options

その中に、

Asset Catalog App Icon Set Name
Asset Catalog Launch Image Set Name

という設定項目があり、デフォルトでは AppIcon と LaunchImage が設定されています。

これを ReleaseAppIcon などの自身で設定した Image Set 名に設定する事で、

ターゲット毎に Image Set を変更する事が可能になります。

ちなみに xcconfig などで書くのであれば、上記2項目のディレクティブは以下です。

ASSETCATALOG_COMPILER_APPICON_NAME
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME

Asset Catalog のとても残念な所

ここまで Asset Catalog の良い所だけ書いてきましたが、実のところ残念な所も多いです。

たとえば上記で行ったターゲット毎の Image Set の出し分けを、

アプリ内で利用するリソースに対しても行うのは非常に困難で、

結局ビルド後のスクリプトで Images.xcassets 配下の画像リソースを上書きする手間が出てきます。

詳細は下書き程度に書いた僕のブログを読んでください。

Asset Catalogs with Multiple Targets | jarinosuke stash