160 Views
March 15, 14
スライド概要
Xcode で誰もが目にするファイルの階層管理「グループ」と「フォルダー参照」の特徴と Xcode での扱われ方の紹介です。Xcode 5 で登場した画像管理「アセットカタログ」の機能・魅力も駆け足で紹介しています。
※ Docswell での公開に移行する直前の Slideshare での閲覧数は 14,946 でした。
正統派趣味人プログラマー。プログラミングとは幼馴染です。
Xcode 再⼊入⾨門 -‐‑‒ グループとフォルダー参照 -‐‑‒ 〜~それぞれの特徴の差をもう⼀一度度〜~ EZ-‐‑‒NET 熊⾕谷友宏 @EasyStyleGK http://program.station.ez-‐‑‒net.jp/
⾃自⼰己紹介 EZ-‐‑‒NET 熊⾕谷友宏 http://program.station.ez-‐‑‒net.jp/ @EasyStyleGK EZ-‐‑‒NET IP Phone ⾳音で再配達ゴッド ⾳音で再配達 ⾳音でダイヤル いつもの電卓 for iPad いつもの電卓 for iPhone
はじめに 「グループ」とか 「フォルダー参照」って何? プロジェクトで扱うファイルを 階層管理理する機能
はじめに フォルダーを登録するときに 誰もが⽬目にするアレ
オフレコ もしかして フォルダー参照って 画像の管理理とかに便便利利かも? そう思い⽴立立った、いつかの体験談
はじめに グループとフォルダー参照の 特徴の違いを整理理してみる
第1章 グループ Groups
グループの特徴 • ⻩黄⾊色で⾊色づけされている • Mac フォルダーとは別管理理 • ファイルひとつひとつに着⽬目
グループの特徴 (1/3) ⻩黄⾊色で⾊色づけされている • Mac ファインダーのフォルダーは⽔水⾊色 • つまり(?)別なもの • 階層は Xcode 内で独⾃自に管理理されている
グループの特徴 (2/3) Mac フォルダーとは別管理理 • グループ内のファイルの保存場所は グループ毎に Location で指定されている • Location が指定されていないときは 親グループと同じ場所に保存される
グループの特徴 (3/3) ファイルひとつひとつに着⽬目 • ファイル単位でプロジェクトに登録 – Mac フォルダーだけに追加しても影響なし – Mac フォルダーから削除するとリンク切切れ – ファイル毎に対象ターゲットを選択可能 • 各ファイルを Build Phases で処理理 – ソースファイルはコンパイルしてバイナリへ – リソースファイルは階層無視でバンドルへ
第2章 フォルダー参照 Folder References
フォルダー参照の特徴 • ⽔水⾊色で⾊色づけされている • Mac フォルダーそのもの • フォルダーそのものに着⽬目
フォルダー参照の特徴 (1/3) ⽔水⾊色で⾊色づけされている • Mac ファインダーのフォルダーも⽔水⾊色 • つまり(?)Mac のと似たようなもの
フォルダー参照の特徴 (2/3) Mac フォルダーそのもの • プロジェクトには ルートフォルダーが登録される • フォルダー内の階層や内容は Mac 側のフォルダーで管理理する
フォルダー参照の特徴 (3/3) フォルダーそのものに着⽬目 • フォルダー⾃自体をプロジェクトに登録 – フォルダーへの追加や削除が反映される – ルートフォルダーで対象ターゲットを選択 • フォルダー内には直接関与しない – 各ファイルを Build Phases で処理理しない – 各ファイルを、階層を維持してバンドルへ
第3章 グループとフォルダー参照の 特徴の違いを⽐比較する
⽐比較で使うファイルの準備 グループとして登録 フォルダー参照として登録
バンドル内で⾒見見られる違い グループとして登録 • 全てバンドルのルートへ配置 • ソースはバイナリに組み込み フォルダー参照として登録 • 階層を保ってバンドルへ配置 • ソースもそのままバンドルへ
インターフェイスビルダーでの扱いの違い グループとして登録した画像 フォルダー参照として登録した画像 • • 選択肢にはパスが含まれない 正しいパスを指定して になる
Objective-‐‑‒C コード内での扱いの違い 画像リソースの読み込み グループとして登録した画像 [UIImage imageNamed:@"gsub1.png"]; フォルダー参照として登録した画像 [UIImage imageNamed:@"Reference/rSub/rsub1.png"];
Objective-‐‑‒C コード内での扱いの違い バンドルからの読み込み グループとして登録したリソース NSBundle *bundle = [NSBundle mainBundle]; NSString *path = [bundle pathForResource:@"g" ofType:@"plist"]; フォルダー参照として登録したリソース NSBundle *bundle = [NSBundle mainBundle]; NSString *path = [bundle pathForResource:@"r" ofType:@"plist" inDirectory:@"Reference/rSub"];
オフレコ フォルダー参照 画像の管理理に便便利利そうと思って フォルダー参照を使ってみましたが
オフレコ ちょっと使いにくい Xcode は良良くも悪くも無関⼼心 Interface Builder がやる気ない
第4章 そして突如現れた… アセットカタログ Asset Catalog Xcode 5, iOS 7 の新機能
アセットカタログ アセットカタログとは 1. 画像リソースをまとめて扱う仕組み – ただし JPEG は扱えない 2. ひとつのパッケージとして存在 3. Xcode による全⾯面サポート付き 画像専⽤用のフォルダーみたいなもの
アセットカタログ 1. 画像リソースをまとめて扱う仕組み • • カタログ内を階層で整理理できる (最終的には階層は無視される) ひとつの名前に複数の画像を登録
アセットカタログ 2. ひとつのパッケージとして存在 プロジェクト内のものはフォルダーとして
アセットカタログ 2. ひとつのパッケージとして存在 アプリのバンドル内では単⼀一ファイルとして
アセットカタログ 3. Xcode による全⾯面サポート付き Image Set では複数の環境をまとめて登録 • • 実⾏行行時の環境に応じて 適切切な画像を⾃自動的に選択 Retina 4-‐‑‒inch (R4) は iOS 7 以上のビルドで有効
アセットカタログ 3. Xcode による全⾯面サポート付き インターフェイスビルダーで普通に使える Objective-‐‑‒C からも簡単に使える [UIImage imageNamed:@"Block"]; 実⾏行行環境に応じて採⽤用される画像が切切り替わる
アセットカタログ 3. Xcode による全⾯面サポート付き OS X Icon 画像ならサイズに応じて⾃自動切切替 Objective-‐‑‒C からも簡単に取得可能 [NSImage imageNamed:@"Icon"]; 代⼊入する NSImageView のサイズに応じて 採⽤用される画像が切切り替わる
アセットカタログ 3. Xcode による全⾯面サポート付き スライシングでボタンの背景画像も簡単対応 • 画像に使い⽅方の情報を設定 – – – – • • 「左側・上側に残す部分」 「引き延ばして使う部分」 「無視する部分」 「右側・下側に残す部分」 背景画像で使⽤用すると引き延ばされる iOS 7 以上⽤用のビルドで利利⽤用可能
まとめ
まとめ (1/3) グループ 1. ファイル単位で管理理されている 2. ファイルの追加や削除は Xcode で⾏行行う 3. ファイルは Build Phases で処理理される 4. リソースは階層無視でバンドルにコピー 5. 普通はこれを使う
まとめ (2/3) フォルダー参照 1. フォルダーとして管理理されている 2. ファイルの追加や削除は Mac で⾏行行う 3. フォルダーをそのままバンドルにコピー 4. フォルダー階層はそのまま維持される 5. Interface Builder の対応が中途半端
まとめ (3/3) アセットカタログ 1. 画像専⽤用のパッケージ 2. 画像の追加や削除は専⽤用のエディタで⾏行行う 3. 画像をひとつにまとめてバンドルにコピー 4. フォルダー階層は無視される 5. Xcode による⼿手厚いサポートが魅⼒力力 6. JPEG ファイルは扱えない 7. ⼀一部の機能は iOS 7.0 以上のビルド専⽤用