2012-03-14 10 views
10

¿Cómo obtengo una lista de todos los álbumes de fotos en iOS? Sé que el selector de imágenes tiene que tener una lista de ellos en alguna parte, ya que los muestra todos al usuario. Una vez que tengo los álbumes de fotos, ¿cómo voy a mostrar las miniaturas de todas las imágenes en un álbum en particular? Parece que no puedo encontrar nada en los documentos, pero estoy seguro de que debe haber una forma de hacerlo.Obtenga una lista de todos los álbumes de fotos y miniaturas de cada álbum

+0

En mi proyecto recibo algunos álbumes, es la fecha de visualización en lugar del nombre. Depuro mi código y encontré que mi lista de álbumes contiene álbumes de eventos y que no contiene ningún álbum y su nombre es como fecha. ¿Alguna idea de saltear este evento de mi matriz de activos? por favor dame una solución si tienes. Gracias de antemano – ilesh

Respuesta

20

No puede obtener ese tipo de información de UIImagePickerController si eso es lo que está preguntando.

Eche un vistazo a AssetsLibrary framework. Incluso hay sample code que implementa un selector de imágenes personalizado.

+0

En mi proyecto recibo algunos álbumes, es la fecha de visualización en lugar del nombre. Depuro mi código y encontré que mi lista de álbumes contiene álbumes de eventos y que no contiene ningún álbum y su nombre es como fecha. ¿Alguna idea de saltear este evento de mi matriz de activos? por favor dame una solución si tienes. Gracias de antemano – ilesh

19

Enumerar y obtener la última imagen y su miniatura.

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

En lugar de enumerar para la última foto, podría usar el método 'posterImage' como este' [group posterImage] ', que le da una referencia de la imagen que ve al explorar la galería, generalmente la primera foto –

+0

@ibsweek En mi proyecto recibo algunos álbumes, es la fecha de visualización en lugar del nombre. Depuro mi código y encontré que mi lista de álbumes contiene álbumes de eventos y que no contiene ningún álbum y su nombre es como fecha. ¿Alguna idea de saltear este evento de mi matriz de activos? por favor dame una solución si tienes. Gracias por adelantado – ilesh

0

El marco de la Biblioteca de recursos ha quedado obsoleto a partir de iOS 9.0. En su lugar, utilice el marco de Fotos, que en iOS 8.0 y posterior proporciona más funciones y un mejor rendimiento para trabajar con la biblioteca de fotos de un usuario.

Compruebe Photos marco, e inspeccione: PHAsset, PHAssetCollection, y PHCollectionList, según sus necesidades.

Cuestiones relacionadas