2012-03-16 15 views
5

Sé cómo dejar que el usuario seleccione una imagen de UIImagePickerController, pero no quiero eso. Solo quiero tener NSArray de imágenes almacenadas en el teléfono, pero no quiero involucrar al usuario (para seleccionar una y luego tener esa imagen ...), sino que he creado mi propio selector de imagen personalizado y quiero tener una fuente como gallary.¿Cómo acceder a las imágenes desde las imágenes guardadas de manera programática en el iphone SIN UImagePickerController?

+0

cheque esta [link] (https://github.com/jeena/JPImagePickerController) –

+1

Utilización de elementos de obtener las fotos http://developer.apple.com /library/ios/#documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/01_UsingAssets.html –

+0

@MuditBajpai: Esto no funcionó para mí ... Quiero un conjunto de imágenes almacenadas en el teléfono ... No lo hago Quiero especificar cualquier imagen externa para que se muestre en la Vista, más bien, quiero tener imágenes de la galería del teléfono en sí ... Espero que entiendas ... –

Respuesta

9

Puede hacerlo fácilmente usando la infraestructura AVFoundation y AssetsLibrary. Aquí está el código para acceder a todas las fotos:

-(void)addPhoto:(ALAssetRepresentation *)asset 
{ 
    //NSLog(@"Adding photo!"); 
    [photos addObject:asset]; 
} 

-(void)loadPhotos 
{ 
    photos = [[NSMutableArray alloc] init];  
    library = [[ALAssetsLibrary alloc] init];  

    // Enumerate just the photos and videos group by using ALAssetsGroupSavedPhotos. 
    if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) 
    { 
     [library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop) 
     {   
      // Within the group enumeration block, filter if necessary 
      [group setAssetsFilter:[ALAssetsFilter allPhotos]];   
      [group enumerateAssetsUsingBlock:^(ALAsset *alAsset, NSUInteger index, BOOL *innerStop) 
       {         
        // The end of the enumeration is signaled by asset == nil.    
        if (alAsset) 
        { 
         ALAssetRepresentation *representation = [alAsset defaultRepresentation];      
         [self addPhoto:representation];      
        }  
        else 
        { 
         NSLog(@"Done! Count = %d", photos.count); 
         //Do something awesome 
        } 
       }]; 
     } 
     failureBlock: ^(NSError *error) { 
     // Typically you should handle an error more gracefully than this. 
     NSLog(@"No groups");         
     }]; 
    } 
} 
+0

Genial ... Muchas gracias amigo ... Lo hice de forma similar, excepto que permití al usuario seleccionar si desea imágenes de Fotos guardadas, Álbumes o cualquier otra fuente (en TableView) ... y según esa selección, puse Imágenes a mi galería personalizada. –

+0

Bien, eso es aún mejor. Para los futuros televidentes de esta publicación, ¿podrías aceptar esta respuesta como la respuesta correcta? –

+0

Definitivamente ... esto es simplemente bueno ... –

Cuestiones relacionadas