素敵!最初は全部の画像をこれに移行だ! と思ったものの、やっぱり使い分け ですかね。
アイコン、スプラッシュ画像はAssetCatalog管理でキマリかな
とはまだ思っていますが。
使ってみて、感じた事をば。
良い点
1. 画像を追加してもpbprojファイルの修正が入らない
デザイナーさんに、
「自由に画像は追加しつつStoryboard上のデザイン、修正しちゃってください!」
...としたいのですが、画像をファイルとしてプロジェクトに突っ込むと、プロジェクト構成が記述されているpbprojファイルも修正入ってしまいます。
デザイン部分/コード部分 と分けて作業していても、pbprojファイルがお互い更新が必要になってコンフリクトに。おーまいがー。
結局、「今さわってくださーい」「今さわらないでくださーい」みたいな運用になりがちでした。
だが! AssetCatalogで画像を追加する限り、pbropjの修正は入らない。
分担して並行作業しやすくなりました。
2. 何の画像があるかが一目で確認できる
あの画像の名前、なんだったけーー? という時にXCode上だけだと全部が見渡せず、Finderで探したりしていましたが、XCode上でもすっきり見えるように。
3. アプリアイコン/スプラッシュ画像のサイズが分かる
iOS6, iOS7 とバージョンが上がって幾度に増えていくアイコンのサイズ(笑
どのサイズが必要かはもはや覚えられない。
AssetCatalogでは、どのバージョンであればどのサイズがいるかを示してくれるので便利。
今後のバージョンアップでまたサイズが変わっても、追加対応してくれるに違いない!
4. 画像ファイル名とCatalog上の名前が違ってもOK
デザイナーさんが管理する画像ファイル名のルールと、プログラム上で使う名前のルールが違うこともあるはず。
Catalog上の名前と実画像ファイルの名前が違ってもOKです。
管理という観点では同じ名前の方がやりやすいですけども。
良くない点
1. UIImage#imageNamedでしか読込みができない
AssetCatalogの画像は
[UIImage imageNamed@"aaa"]
で読み込みます。
これをつかうと画像キャッシュされてしまうので、
NSString *path = [[NSBundle mainBundle] pathForResource:@"aaa" ofType:@"png"];
UIImage *image = [[UIImage alloc] initWithContentsOfFile:path];
を使いたい所ですが...残念ながらできません。
AssetCatalogで設定した画像は、コンパイルされると Assets.car というファイルにまとまってしまうようです。
2. CocoaPodsで追加するライブラリプロジェクトには使えない
Aプロジェクトをつくる
BプロジェクトでAをCocoaPodsでinstall
する場合、Aプロジェクトの方にAssetCatalogを使うと画像が上手く取り込めませんでした。
BプロジェクトでAをCocoaPodsでinstall
する場合、Aプロジェクトの方にAssetCatalogを使うと画像が上手く取り込めませんでした。
解決方法わからず... 諦めてAssetCatalog使わない方向へ..。
refs:
Getting .xcassets compilation to work for development pods? #1549
ハマリ点
1. iOS6でのアプリアイコンが non pre-rendered
iOS6で実行したら、アプリアイコンに光沢(グロス)ついちゃってた ということが良く有る。iOS7で見ていると光沢は付かないので結構うっかりやってしまう。
pre-renderedの設定は、AssetsCatalog内にあるので、忘れず設定しましょう。
2. plistのアイコン設定消し忘れ
plistにある、アイコン設定
- Icon files
- CGBundleIcons~ipad
などは忘れず消しましょう。
iPhoneアプリで CGBundleIcons~ipad の設定がある + でも値は空の状態だと、
iPadにインストールした時アイコン無しになっちゃうみたいです。
設定がないなら、他の画像を使ってくれるというルールはここには無いらしい...。
XCode4時代に作ったプロジェクトだと、追加した覚えがなくてもCGBundleIcons~ipadが自動的に入っている可能性があるので注意。
sliceしたものは、Storyboard上でもslice後の表示になるのも、とても嬉しい。
デザイナーさんも、左右上下は○pxづつ固定であとは引き延ばしで...とプログラマさんに指示しなくてもOKなので、やりやすいですな!
端末サイズが大きくなる噂もあるから、
さっさとiOS7以上のみ対応にして、sliceつかって画像を入れるようにした方が後々勝ち組になる気も...!
3. sliceはiOS7以上だけ
sliceをみたとき、resizableImageWithCapInsets をいちいち書かなくてもよいのか!と小躍りしましたが、iOS7以上のみで使用可能でございます。sliceしたものは、Storyboard上でもslice後の表示になるのも、とても嬉しい。
デザイナーさんも、左右上下は○pxづつ固定であとは引き延ばしで...とプログラマさんに指示しなくてもOKなので、やりやすいですな!
端末サイズが大きくなる噂もあるから、
さっさとiOS7以上のみ対応にして、sliceつかって画像を入れるようにした方が後々勝ち組になる気も...!