2012-03-14 10 views
10

iOSのすべてのフォトアルバムのリストを取得するにはどうすればよいですか?画像ピッカーは、それらのすべてをユーザーに表示してから、どこかのリストを持っていなければならないことは分かっています。一度フォトアルバムがあれば、特定のアルバムのすべての画像のサムネイルを表示するにはどうすればいいですか?私はドキュメントで何かを見つけることができないようですが、私はそれを行う方法がなければならないと確信しています。各アルバムのすべてのフォトアルバムとサムネイルのリストを取得

+0

私のプロジェクトでは、名前の代わりに日付を表​​示するアルバムがあります。私は自分のコードをデバッグして、私のアルバムリストにはイベントアルバムが含まれていて、日付のようなアルバムとその名前は含まれていないことがわかりました。このイベントをスキップするアイデアは私のアセット配列ですか?あなたが持っている場合私に解決策を与えてください。ありがとうございました – ilesh

答えて

20

UIImagePickerControllerからそのような情報を得ることはできません。

AssetsLibraryフレームワークを見てください。カスタム画像ピッカーを実装するsample codeもあります。

+0

私のプロジェクトでは、いくつかのアルバムを取得するのは名前の代わりに日付を表​​示することです。私は自分のコードをデバッグして、私のアルバムリストにはイベントアルバムが含まれていて、日付のようなアルバムとその名前は含まれていないことがわかりました。このイベントをスキップするアイデアは私のアセット配列ですか?あなたが持っている場合私に解決策を与えてください。前もってありがとうございます – ilesh

19

最新の画像とそのサムネイルを列挙して取得します。

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; 

// Enumerate just the photos and videos group by using ALAssetsGroupSavedPhotos. 
[library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop) { 

    // Within the group enumeration block, filter to enumerate just photos. 
    [group setAssetsFilter:[ALAssetsFilter allPhotos]]; 

    // Chooses the photo at the last index 
    [group enumerateAssetsWithOptions:NSEnumerationReverse usingBlock:^(ALAsset *alAsset, NSUInteger index, BOOL *innerStop) { 
     // The end of the enumeration is signaled by asset == nil. 
     if (alAsset) { 
      ALAssetRepresentation *representation = [alAsset defaultRepresentation]; 
      UIImage *latestPhoto = [UIImage imageWithCGImage:[representation fullScreenImage]]; 


      UIImage *latestPhotoThumbnail = [UIImage imageWithCGImage:[alAsset thumbnail]]; 


      // Stop the enumerations 
      *stop = YES; *innerStop = YES; 

      // Do something interesting with the AV asset. 
      //[self sendTweet:latestPhoto]; 
     } 
    }]; 
} failureBlock: ^(NSError *error) { 
    // Typically you should handle an error more gracefully than this. 
    NSLog(@"No groups"); 
}]; 
+0

最新の写真を列挙する代わりに、この '[group posterImage]'のような 'posterImage'メソッドを使うことができます。これは、ギャラリーをブラウズしているときに見える画像を返します。通常は最初の画像 –

+0

@ibsweek私のプロジェクトでは、名前の代わりに日付を表​​示するアルバムがあります。私は自分のコードをデバッグして、私のアルバムリストにはイベントアルバムが含まれていて、日付のようなアルバムとその名前は含まれていないことがわかりました。このイベントをスキップするアイデアは私のアセット配列ですか?あなたが持っている場合私に解決策を与えてください。前もって感謝します – ilesh

0

アセットライブラリのフレームワークは、iOS 9.0以降では廃止されました。代わりに、iOS 8.0以降では、写真のフレームワークを使用します。これは、ユーザーのフォトライブラリを使用するための機能とパフォーマンスが向上しています。

Photosフレームワークをチェックし、必要に応じてPHAsset、PHAssetCollection、およびPHCollectionListを調べます。

関連する問題