4で追加された「AssetsLibraryフレームワーク」を使ってフォトライブリから写真を読み込み、付加情報を付けて保存をする方法について解説します。Graphicsで作るiPad向けお絵かきアプリの基礎」で作成したお絵かきアプリに対して、これらの機能を追加していきましょう。AssetsLibraryフレームワークでできること第5回記事では、「UIImageWriteToSavedPhotosAlbum」関数を用いてアプリ内からフォトアルバムへ写真を追加する方法を解説しました。4以前でも可能でしたが、新しく追加されたAssetsLibraryフレームワークを使用すると、以下のことが可能になります。写真だけでなくビデオなども含めたフォトライブラリ内の全データを取得できる複数のデータを一度に取得できるデータに設定されたExif(付加情報)を取得できるデータにExifを設定して保存できる(※上書き保存は不可。新規保存となる)AssetsLibraryフレームワークのインポートそれでは、お絵かきアプリのツールバーに新しく検索ボタンを追加し、このボタンを押すと、フォトライブラリ内の全画像データをテーブルに表示する画面を作成していきましょう。第5回のお絵かきアプリのプロジェクト/fsmart/articles/iphonesdk05/SampleOekaki.zipをXcodeで開きます。Xcodeのグループとファイルから[Frameworks]を右クリックし、[追加]→[既存のフレームワーク]を選択します。表示されたフレームワークの一覧から[AssetsLibrary.framework][ImageIO.framework]の2つを選択し、[追加]をクリックします。以上で、プロジェクトに[AssetsLibrary.framework][ImageIO.framework]が追加されました。ImageIOはExifを保存する際にキーとなる定数を保持しているため必要となります。Sources]→「【アプリ名】_Prefix.pch」を開き、AssetsLibraryとImageIOの共通インポートを追加します。「DetailViewController.m」のviewDidLoadメソッドに検索ボタンを追加します。release];}DetailViewController.msearchPhotoメソッドは、写真検索ボタン押下時に呼ばれます。この中では、UINavigaitionControllerを継承したPhotoViewControllerを作成し、モーダルビューとして表示しています。このPhotoViewControllerにフォトライブラリの内容を表示していきます。次に、「PhotoViewController」をXcodeのグループとファイルに新規作成します。@endPhotoViewController.hPhotoViewControllerDelegateプロトコルは呼び出し元のDetailViewController、呼び出し先のViewControllerすべてに実装し、「写真の決定」「選択の取消」が行われた際にDetailViewControllerへ処理が戻るようにしていきます。@endPhotoViewController.minitControllerメソッドでは、UINavigationControllerでテーブル表示を行うため、UITableViewControllerの継承クラスをルートビューに設定しています。次に、「PhotoGroupViewController.h」をXcodeのグループとファイルに新規作成します。@endPhotoGroupViewController.hメンバ変数「gorups」は、AssetsLibraryフレームワークで定義されたALAssetsGroupクラスの集合を保持します。ALAssetsGroupクラスはフォトライブラリ内で分けられた1つのグループを表しています。メンバ変数「library」は、AssetsLibraryフレームワークで定義されたALAssetsLibraryクラスであり、フォトライブラリを操作するためのクラスとなります。フォトライブラリから取得したグループをgroupsに追加。フォトライブラリへアクセスし、引数のブロックを実行する。@endPhotoGroupViewController.m「viewDidLoadメソッド」では、performSelectorInBackgroundメソッドを使用して別スレッドでフォトライブラリ内の検索を行っています。別スレッドにしておくことで大量の画像データを検索する場合も画面がスムーズに表示されます。「searchPhotoGroups」メソッドでは、「groupBlock」というブロック構文をALAssetsLibraryのenumerateGroupWithTypesメソッドに渡すことでフォトライブラリ内のグループデータをgroupsに追加しています。Objective-C言語のブロック構文については、アップル公式ドキュメント「ブロックプログラミングトピック」をご参照ください。indexPath」メソッドでは、メンバ変数gorupsからテーブル行ごとのALAssetGroupを取得し、グループに設定されたポスター画像・グループ名・データ数を取得し、セルにセットしています。実行して確認ここまで実装が完了したら、ビルドして実行([Command]+[R]キー)してみましょう。カメラボタンの右側に作った検索ボタンを押すと、「グループ選択」画面が現れ、フォトライブラリ内のグループが表示されます。次ページでは、このグループの中から写真を選択するための一覧画面を作成します。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。