-
Notifications
You must be signed in to change notification settings - Fork 336
5.2 Assets Library
ALAssetsLibrary Class Reference/
iOS4.0 から導入された Assets Library を使うことで、個々のメディア(asset)をオブジェクトとして扱うことが出来ます。またそのメディアのメタデータへのアクセスも可能になります。これによって、UIImagePicker では実現できなかった写真の複数枚選択や、写真に含まれている位置情報を使うなど、様々な表現を実現できるようになります。
Assets Library は ALAssetsLibrary class, ALAsset class, そして ALAssetsGroup class を使用します。
- ALAssetsLibrary - フォト、ビデオにアクセスするためのライブラリ。Photo application 内で使われているライブラリ
- ALAsset - フォト、ビデオを表現するオブジェクト。内部のメタデータ(フォトのロケーション情報、向きなど)にアクセス可能
- ALAssetsGroup - 順序づけられた複数の asset を管理するもの。各 asset は複数の assetsGroup に属することが可能
Assets Library を使うには、別途 Framework を追加する必要があります。下記画像の通りに追加してください。
project -> Build Phases -> Link Binary With Libraries
asset でインクリメンタルサーチの結果を選択し add
MixiAssetsViewController.m
#import <AssetsLibrary/AssetsLibrary.h>
@interface MixiAssetViewController ()
@property (nonatomic, strong) ALAssetsLibrary *assetsLibrary;
@end
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
_assetsLibrary = [[ALAssetsLibrary alloc] init];
}
下記のようなアルバムを全て取得してみましょう。
[_assetsLibrary enumerateGroupsWithTypes:ALAssetsGroupAll
usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
NSLog(@"AssetsGroup : %@", group);
} failureBlock:^(NSError *error) {
// iPhone の設定で写真アクセスを拒否している場合
}];
console
2013-04-30 12:23:36.238 MixiImagePickerSample[84329:c07] Album : ALAssetsGroup - Name:Hoge, Type:Album, Assets count:0
2013-04-30 12:23:36.240 MixiImagePickerSample[84329:c07] Album : ALAssetsGroup - Name:Fuga, Type:Album, Assets count:0
2013-04-30 12:23:36.240 MixiImagePickerSample[84329:c07] Album : ALAssetsGroup - Name:Piyo, Type:Album, Assets count:0
2013-04-30 12:23:36.243 MixiImagePickerSample[84329:c07] Album : ALAssetsGroup - Name:Saved Photos, Type:Saved Photos, Assets count:6
2013-04-30 12:23:36.244 MixiImagePickerSample[84329:c07] Album : (null)
usingBlock が AssetsGroup 毎にコールされていることがわかります。また Blocks で渡されている AssetsGroup は Photo Application で提供されている順番とは逆に渡されます。 failureBlock では、何らかの理由によりフォトライブラリにアクセスできなかった場合(プライバシーでフォトへのアクセスを許可してないなど)に呼ばれます。
MixiAssetsGroupViewController で UITableView を用いて、自作のアルバム選択画面を作成してください。
ポイント
- 複数の AssetsGroup を管理する必要があります。Array で管理してください。
- numberOfAssets でアルバムが含んでいる assets の数を取得して表示してください。
- posterImage でアルバムカバーを取得して表示してください。
- valueForProperty:で assetsGroup の album name を参照してください。key は公式 reference から調べてください。
[_assetsGroup enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
NSLog(@"asset %@", result);
}];
console
2013-04-30 15:02:09.072 MixiAssetsLibrarySample[87526:c07] asset ALAsset - Type:Video, URLs:assets-library://asset/asset.mov?id=588728BC-9E59-4085-86DA-A2CDCD949512&ext=mov
2013-04-30 15:02:09.073 MixiAssetsLibrarySample[87526:c07] asset ALAsset - Type:Photo, URLs:assets-library://asset/asset.PNG?id=62BBB535-3C16-4F92-9BA4-117C777665F2&ext=PNG
2013-04-30 15:02:09.074 MixiAssetsLibrarySample[87526:c07] asset ALAsset - Type:Photo, URLs:assets-library://asset/asset.PNG?id=29DC15C7-B150-404F-8C18-E51CA3135B8C&ext=PNG
2013-04-30 15:02:09.075 MixiAssetsLibrarySample[87526:c07] asset ALAsset - Type:Photo, URLs:assets-library://asset/asset.PNG?id=0A8901B4-4A72-4B14-924C-16DD055B2E96&ext=PNG
2013-04-30 15:02:09.076 MixiAssetsLibrarySample[87526:c07] asset ALAsset - Type:Photo, URLs:assets-library://asset/asset.PNG?id=22673F01-4F9B-4C65-8981-22C248DFF974&ext=PNG
2013-04-30 15:02:09.076 MixiAssetsLibrarySample[87526:c07] asset ALAsset - Type:Photo, URLs:assets-library://asset/asset.PNG?id=B80BF891-033D-4528-89A1-3ABFDB918618&ext=PNG
2013-04-30 15:02:09.077 MixiAssetsLibrarySample[87526:c07] asset (null)
MixiAssetsGroupViewController から選択した album の photo 一覧を下記のように表示させてください。
ポイント
- valueForProperty:で asset の date property を参照してください。key は公式 reference から調べてください。
- thumbnail で asset のサムネイルを取得し UITableViewCell に表示してください。
このように Assets Library を使えば個々の asset にアクセスするが出来ます。これを応用することで、写真選択画面のカスタマイズをしたり、写真の複数毎選択が可能になります。
はじめに
-
導入
-
1.3 UIViewController1 UIViewController のカスタマイズ(xib, autoresizing)
-
UIKit 1 - container, rotate-
-
UIKit 2- UIView -
-
UIKit 3 - table view -
-
UIKit 4 - image and text -
-
ネットワーク処理
-
ローカルキャッシュと通知
-
Blocks, GCD
-
設計とデザインパターン
-
開発ツール
-
テスト
-
In-App Purchase
-
付録