2012-06-26 2 views
1

Я хочу получить все изображения, хранящиеся на устройстве, и показать их в качестве галереи в приложении для iPhone. UIImagePickerController показывает все фотографии в миниатюре и при выборе каждой фотографии мы получаем данные только этого выбранного изображения, вместо этого я хочу получить все фотографии за один снимок и показать их как галерею. Возможно ли это, если да, скажите мне, как это сделать. Что такое AssetLibrary? Помогает ли это тому, что мне нужно достичь. Если да, скажите, пожалуйста, как это сделать с помощью AssetLibrary.Как получить все изображения, хранящиеся на устройстве, и показать их как галерею в iPhone sdk

+0

Заканчивать разработчик яблока статьи: pasawaya

ответ

1

Экземпляр ALAssetsLibrary обеспечивает доступ к видео и фотографиям, находящимся под контролем приложения «Фотографии».

В библиотеку входят те, которые находятся в альбоме сохраненных фотографий, те, которые поступают из iTunes, и те, которые были непосредственно импортированы в устройство. Вы используете его для извлечения списка всех групп активов и для сохранения изображений и видео в альбоме сохраненных фотографий.

ELCImagePickerController - пример проекта для получения всех фотографий в фотоальбоме iPhone.

0

Вы можете получить все фотографии с устройства, используя библиотеку активов. Я внедрил это в своем приложении

-(void)getAllPhotos{ 
    NSArray *imageArray=[[NSArray alloc] init]; 
    NSMutableArray *mutableArray =[[NSMutableArray alloc]init]; 
    NSMutableArray* assetURLDictionaries = [[NSMutableArray alloc] init]; 

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

    void (^assetEnumerator)(ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop) { 
     if(result != nil) { 
      if([[result valueForProperty:ALAssetPropertyType] isEqualToString:ALAssetTypePhoto]) { 
       [assetURLDictionaries addObject:[result valueForProperty:ALAssetPropertyURLs]]; 
       // NSLog(@"assestlibrarymurari%@",assetURLDictionaries); 

       NSURL *url= (NSURL*) [[result defaultRepresentation]url]; 

       [library assetForURL:url 
         resultBlock:^(ALAsset *asset) { 
          UIImage *img = [UIImage imageWithCGImage:[[asset defaultRepresentation] fullScreenImage]]; 
          if(img){ 
           [mutableArray addObject:img]; 
          } 
//         [mutableArray addObject:[UIImage imageWithCGImage:[[asset defaultRepresentation] fullScreenImage]]]; 

          if ([mutableArray count]==count) 
          { 
           imageArray=[[NSArray alloc] initWithArray:mutableArray]; 
           [self allPhotosCollected:imageArray]; 
          } 
         } 
         failureBlock:^(NSError *error){ NSLog(@"operation was not successfull!"); } ]; 

      } 
     } 
    }; 

    NSMutableArray *assetGroups = [[NSMutableArray alloc] init]; 

    void (^ assetGroupEnumerator) (ALAssetsGroup *, BOOL *)= ^(ALAssetsGroup *group, BOOL *stop) { 
     if(group != nil) { 
      [group enumerateAssetsUsingBlock:assetEnumerator]; 
      [assetGroups addObject:group]; 
      NSLog(@"AssetGroup%@",assetGroups); 
      count=[group numberOfAssets]; 
     } 
    }; 

    assetGroups = [[NSMutableArray alloc] init]; 

    [library enumerateGroupsWithTypes:ALAssetsGroupAll 
          usingBlock:assetGroupEnumerator 
         failureBlock:^(NSError *error) {NSLog(@"There is an error");}]; 


} 

Вызов этого метода в ViewDidLoad или где вам нужно. Я надеюсь, что это поможет вам.

+0

отсутствует allPhotosCollected, количество – jose920405