Xcode グループとフォルダー参照 #yhios

382 Views

March 15, 14

スライド概要

Xcode で誰もが目にするファイルの階層管理「グループ」と「フォルダー参照」の特徴と Xcode での扱われ方の紹介です。Xcode 5 で登場した画像管理「アセットカタログ」の機能・魅力も駆け足で紹介しています。

※ Docswell での公開に移行する直前の Slideshare での閲覧数は 14,946 でした。

profile-image

正統派趣味人プログラマー。プログラミングとは幼馴染です。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Xcode 再⼊入⾨門 -‐‑‒ グループとフォルダー参照 -‐‑‒ 〜~それぞれの特徴の差をもう⼀一度度〜~ EZ-‐‑‒NET  熊⾕谷友宏 @EasyStyleGK http://program.station.ez-‐‑‒net.jp/

2.

⾃自⼰己紹介 EZ-‐‑‒NET  熊⾕谷友宏 http://program.station.ez-‐‑‒net.jp/ @EasyStyleGK EZ-‐‑‒NET  IP  Phone ⾳音で再配達ゴッド ⾳音で再配達 ⾳音でダイヤル いつもの電卓 for  iPad いつもの電卓 for  iPhone

3.

はじめに 「グループ」とか 「フォルダー参照」って何? プロジェクトで扱うファイルを 階層管理理する機能

4.

はじめに フォルダーを登録するときに 誰もが⽬目にするアレ

5.

オフレコ もしかして フォルダー参照って 画像の管理理とかに便便利利かも? そう思い⽴立立った、いつかの体験談

6.

はじめに グループとフォルダー参照の 特徴の違いを整理理してみる

7.

第1章 グループ Groups

8.

グループの特徴 • ⻩黄⾊色で⾊色づけされている • Mac  フォルダーとは別管理理 • ファイルひとつひとつに着⽬目

9.

グループの特徴 (1/3) ⻩黄⾊色で⾊色づけされている • Mac  ファインダーのフォルダーは⽔水⾊色 • つまり(?)別なもの • 階層は Xcode  内で独⾃自に管理理されている

10.

グループの特徴 (2/3) Mac  フォルダーとは別管理理 • グループ内のファイルの保存場所は グループ毎に Location  で指定されている • Location  が指定されていないときは 親グループと同じ場所に保存される

11.

グループの特徴 (3/3) ファイルひとつひとつに着⽬目 • ファイル単位でプロジェクトに登録 – Mac  フォルダーだけに追加しても影響なし – Mac  フォルダーから削除するとリンク切切れ – ファイル毎に対象ターゲットを選択可能 • 各ファイルを Build  Phases  で処理理 – ソースファイルはコンパイルしてバイナリへ – リソースファイルは階層無視でバンドルへ

12.

第2章 フォルダー参照 Folder References

13.

フォルダー参照の特徴 • ⽔水⾊色で⾊色づけされている • Mac  フォルダーそのもの • フォルダーそのものに着⽬目

14.

フォルダー参照の特徴 (1/3) ⽔水⾊色で⾊色づけされている • Mac  ファインダーのフォルダーも⽔水⾊色 • つまり(?)Mac  のと似たようなもの

15.

フォルダー参照の特徴 (2/3) Mac  フォルダーそのもの • プロジェクトには ルートフォルダーが登録される • フォルダー内の階層や内容は Mac  側のフォルダーで管理理する

16.

フォルダー参照の特徴 (3/3) フォルダーそのものに着⽬目 • フォルダー⾃自体をプロジェクトに登録 – フォルダーへの追加や削除が反映される – ルートフォルダーで対象ターゲットを選択 • フォルダー内には直接関与しない – 各ファイルを Build  Phases  で処理理しない – 各ファイルを、階層を維持してバンドルへ

17.

第3章 グループとフォルダー参照の 特徴の違いを⽐比較する

18.

⽐比較で使うファイルの準備 グループとして登録 フォルダー参照として登録

19.

バンドル内で⾒見見られる違い グループとして登録 • 全てバンドルのルートへ配置 • ソースはバイナリに組み込み フォルダー参照として登録 • 階層を保ってバンドルへ配置 • ソースもそのままバンドルへ

20.

インターフェイスビルダーでの扱いの違い グループとして登録した画像 フォルダー参照として登録した画像 • • 選択肢にはパスが含まれない 正しいパスを指定して になる

21.

Objective-‐‑‒C  コード内での扱いの違い 画像リソースの読み込み グループとして登録した画像 [UIImage imageNamed:@"gsub1.png"]; フォルダー参照として登録した画像 [UIImage imageNamed:@"Reference/rSub/rsub1.png"];

22.

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"];

23.

オフレコ フォルダー参照 画像の管理理に便便利利そうと思って フォルダー参照を使ってみましたが

24.

オフレコ ちょっと使いにくい Xcode  は良良くも悪くも無関⼼心 Interface  Builder  がやる気ない

25.

第4章 そして突如現れた… アセットカタログ Asset  Catalog Xcode  5,  iOS  7  の新機能

26.

アセットカタログ アセットカタログとは 1. 画像リソースをまとめて扱う仕組み – ただし JPEG  は扱えない 2. ひとつのパッケージとして存在 3. Xcode  による全⾯面サポート付き 画像専⽤用のフォルダーみたいなもの

27.

アセットカタログ 1.  画像リソースをまとめて扱う仕組み • • カタログ内を階層で整理理できる (最終的には階層は無視される) ひとつの名前に複数の画像を登録

28.

アセットカタログ 2.  ひとつのパッケージとして存在 プロジェクト内のものはフォルダーとして

29.

アセットカタログ 2.  ひとつのパッケージとして存在 アプリのバンドル内では単⼀一ファイルとして

30.

アセットカタログ 3.  Xcode  による全⾯面サポート付き Image  Set  では複数の環境をまとめて登録 • • 実⾏行行時の環境に応じて 適切切な画像を⾃自動的に選択 Retina  4-‐‑‒inch  (R4)  は iOS  7  以上のビルドで有効

31.

アセットカタログ 3.  Xcode  による全⾯面サポート付き インターフェイスビルダーで普通に使える Objective-‐‑‒C  からも簡単に使える [UIImage imageNamed:@"Block"]; 実⾏行行環境に応じて採⽤用される画像が切切り替わる

32.

アセットカタログ 3.  Xcode  による全⾯面サポート付き OS  X  Icon  画像ならサイズに応じて⾃自動切切替 Objective-‐‑‒C  からも簡単に取得可能 [NSImage imageNamed:@"Icon"]; 代⼊入する NSImageView  のサイズに応じて 採⽤用される画像が切切り替わる

33.

アセットカタログ 3.  Xcode  による全⾯面サポート付き スライシングでボタンの背景画像も簡単対応 • 画像に使い⽅方の情報を設定 – – – – • • 「左側・上側に残す部分」 「引き延ばして使う部分」 「無視する部分」 「右側・下側に残す部分」 背景画像で使⽤用すると引き延ばされる iOS  7  以上⽤用のビルドで利利⽤用可能

34.

まとめ

35.

まとめ (1/3) グループ 1. ファイル単位で管理理されている 2. ファイルの追加や削除は Xcode  で⾏行行う 3. ファイルは Build  Phases  で処理理される 4. リソースは階層無視でバンドルにコピー 5. 普通はこれを使う

36.

まとめ (2/3) フォルダー参照 1. フォルダーとして管理理されている 2. ファイルの追加や削除は Mac  で⾏行行う 3. フォルダーをそのままバンドルにコピー 4. フォルダー階層はそのまま維持される 5. Interface  Builder  の対応が中途半端

37.

まとめ (3/3) アセットカタログ 1. 画像専⽤用のパッケージ 2. 画像の追加や削除は専⽤用のエディタで⾏行行う 3. 画像をひとつにまとめてバンドルにコピー 4. フォルダー階層は無視される 5. Xcode  による⼿手厚いサポートが魅⼒力力 6. JPEG  ファイルは扱えない 7. ⼀一部の機能は iOS  7.0  以上のビルド専⽤用