2016-04-21 33 views
1

獲取相機膠捲的圖像,我設法從**ALAssetsLibrary**得到的照片與此代碼:iOS版 - 從ALAssetsLibrary

-(void)getPhotosFromAssetsLibWithPhotoFilter:(NSString *)filterAlbumString 
{ 
    _assets = [@[] mutableCopy]; 
    __block NSMutableArray *tmpAssets = [@[] mutableCopy]; 
    __block NSMutableArray *albumGroup = [@[] mutableCopy]; 
    ALAssetsLibrary *assetsLibrary = [PhotoLibViewController defaultAssetsLibrary]; 
    [assetsLibrary enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) 
    { 
     if (group != nil) 
     { 
      [group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) 
      { 
       if(result) 
       { 
        if (![filterAlbumString isEqualToString:@""]) 
        { 
         if ([[NSString stringWithFormat:@"%@", [group valueForProperty:ALAssetsGroupPropertyName]] isEqualToString:filterAlbumString]) 
         { 
          [tmpAssets addObject:result]; 
         } 
        } 
        else 
        { 
         [tmpAssets addObject:result]; 
        } 
       } 
      }]; 

      [albumGroup addObject:[NSString stringWithFormat:@"%@", [group valueForProperty:ALAssetsGroupPropertyName]]]; 
     } 
     else 
     { 
      dispatch_async(dispatch_get_main_queue(), ^{ 

       if ([self respondsToSelector:@selector(retrievedPhotoLibrary:)]) 
       { 
        NSArray *albumGroupReversed = [[albumGroup reverseObjectEnumerator] allObjects]; 
        [self retrievedPhotoLibrary:albumGroupReversed]; 
       } 
      }); 

      self.assets = [[tmpAssets reverseObjectEnumerator] allObjects]; 

      [self.collectionView reloadData]; 
     } 

    } failureBlock:^(NSError *error) { 
     NSLog(@"Error loading images %@", error); 
    }]; 
} 

我用這樣的:

[self getPhotosFromAssetsLibWithPhotoFilter:@"Camera Roll"]; 

這個偉大的工程。但問題是我在本地化我的應用程序和其他語言不是英語不使用"Camera Roll"作爲專輯的名稱。當我使用@"Camera Roll"時,我無法看到圖像。

是否有使用的名稱代表Camera Roll?無論使用哪種語言,這都適用於所有設備?

回答

0

嘗試這樣的事情,

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


[al enumerateGroupsWithTypes:ALAssetsGroupAll 

        usingBlock:^(ALAssetsGroup *group, BOOL *stop) 
{ 
    [group enumerateAssetsUsingBlock:^(ALAsset *asset, NSUInteger index, BOOL *stop) 
     { 
      if (asset) 
      { 
      // .. do something with the asset 
        } 
     } 
     ]; 
} 

       failureBlock:^(NSError *error) 
{ 
    // User did not allow access to library 
    //.. handle error 
} 
]; 

您可以通過更換enumerateGroupsWithTypes使用不同的來源。

第二件事ALassetlibrary現在不推薦使用,所以你應該試試PHPhotoLibrary

希望這將有助於:)

1

請使用ALAssetsGroupSavedPhotos進行過濾。