Skip to content
This repository has been archived by the owner on Jun 20, 2023. It is now read-only.

5.2 Assets Library

tamotamago edited this page May 7, 2013 · 2 revisions

class Reference

ALAssetsLibrary Class Reference/

ALAsset Class Reference

ALAssetsGroup Class Reference

iOS4.0 から導入された Assets Library を使うことで、個々のメディア(asset)をオブジェクトとして扱うことが出来ます。またそのメディアのメタデータへのアクセスも可能になります。これによって、UIImagePicker では実現できなかった写真の複数枚選択や、写真に含まれている位置情報を使うなど、様々な表現を実現できるようになります。

Assets Library は ALAssetsLibrary class, ALAsset class, そして ALAssetsGroup class を使用します。

  • ALAssetsLibrary - フォト、ビデオにアクセスするためのライブラリ。Photo application 内で使われているライブラリ
  • ALAsset - フォト、ビデオを表現するオブジェクト。内部のメタデータ(フォトのロケーション情報、向きなど)にアクセス可能
  • ALAssetsGroup - 順序づけられた複数の asset を管理するもの。各 asset は複数の assetsGroup に属することが可能

ALAssetsLibrary を使うための準備

Assets Library を使うには、別途 Framework を追加する必要があります。下記画像の通りに追加してください。

project -> Build Phases -> Link Binary With Libraries addFramework1

asset でインクリメンタルサーチの結果を選択し add addFramework2

AssetsLibrary インスタンス作成

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

AssetsGroup の取得

下記のようなアルバムを全て取得してみましょう。

photoApp_library

    [_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 では、何らかの理由によりフォトライブラリにアクセスできなかった場合(プライバシーでフォトへのアクセスを許可してないなど)に呼ばれます。

問題 (15 minutes)

MixiAssetsGroupViewController で UITableView を用いて、自作のアルバム選択画面を作成してください。

ポイント

  • 複数の AssetsGroup を管理する必要があります。Array で管理してください。
  • numberOfAssets でアルバムが含んでいる assets の数を取得して表示してください。
  • posterImage でアルバムカバーを取得して表示してください。
  • valueForProperty:で assetsGroup の album name を参照してください。key は公式 reference から調べてください。

MixiAssetsGroupViewController

Asset の取得

    [_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)

問題 (15 minutes)

MixiAssetsGroupViewController から選択した album の photo 一覧を下記のように表示させてください。

ポイント

  • valueForProperty:で asset の date property を参照してください。key は公式 reference から調べてください。
  • thumbnail で asset のサムネイルを取得し UITableViewCell に表示してください。

MixiAssetsViewController

このように Assets Library を使えば個々の asset にアクセスするが出来ます。これを応用することで、写真選択画面のカスタマイズをしたり、写真の複数毎選択が可能になります。

はじめに

  1. iOSについて

  2. Xcode最初のステッフ

  3. 導入

  4. Objective C の基礎

  5. メモリ管理

  6. 1.3 UIViewController1 UIViewController のカスタマイズ(xib, autoresizing)

  7. 1.3 UIViewController1 UIViewController のカスタマイズ(storyboard)

  8. UIViewController2 - ModalViewController

  9. UIViewController2 - ModalViewController(storyboard)

  10. UIViewController3 - ライフサイクル

  11. HomeWork 1 Objective C の基本文法

  12. HomeWork 2 UIViewControllerとModalViewController

  13. HomeWork 3 UIViewController + Animation

  14. UIKit 1 - container, rotate-

  15. UINavigationController

  16. UITabController

  17. Custom Container View Controller

  18. Supporting Multiple Interface Orientations

  19. HomeWork 1 - タブバーからモーダルビューを表示する

  20. HomeWork 2 - NavigationController

  21. HomeWork 2.3 デバイスことに回転対応

  22. UIKit 2- UIView -

  23. UIView

  24. UIView のカスタマイズ

  25. UIView Animation

  26. HomeWork 1 - UIScrollView

  27. UIKit 3 - table view -

  28. UITableView について

  29. UITableViewとNavigationController

  30. custom UITableViewCell の作成

  31. UITableViewのその他のオプション、カスタマイズ

  32. HomeWork 1 - Dynamic height with a custom uitableviewcell

  33. UIKit 4 - image and text -

  34. UIImagePickerController

  35. Assets Library

  36. UITextFiled, UITextView

  37. KeyboardNotification

  38. Homework 1 - フォトの複数枚選択

  39. ネットワーク処理

  40. NSURLConnection

  41. JSONのシリアライズとデシリアライズ

  42. UIWebView

  43. ローカルキャッシュと通知

  44. NSUserDefaults, Settings Bundle

  45. NSFileManager

  46. Key Value Observing

  47. NSNotification、NSNotificationCenter を用いた通知

  48. UILocalNotification

  49. Blocks, GCD

  50. Blocks

  51. GCD

  52. 【演習】GCD,-Blocksを用いたHTTPリクエストマネージャの作成

  53. 設計とデザインパターン

  54. クラス設計 1

  55. クラス設計 2

  56. [クラス設計演習] (https://github.com/mixi-inc/iOSTraining/wiki/9.3-%E3%82%AF%E3%83%A9%E3%82%B9%E8%A8%AD%E8%A8%88%E6%BC%94%E7%BF%92)

  57. 開発ツール

  58. Instruments, デバッガ

  59. CocoaPods

  60. テスト

  61. iOS開発におけるテスト

  62. GHUnit

  63. Kiwi

  64. KIF

  65. In-App Purchase

  66. In-App Purchase

  67. 付録

  68. Tips of Xcode

  69. Auto Layout 入門

  70. Auto Layout ドリル

Edit sidebar

Clone this wiki locally