Получить список всех фотоальбомов и миниатюр для каждого альбома

Как получить список всех фотоальбомов в iOS? Я знаю, что средство выбора изображений должно где-то иметь их список, поскольку оно отображает их все пользователю. Как только у меня появятся фотоальбомы, как мне отобразить миниатюры всех изображений в определенном альбоме? Кажется, я ничего не могу найти в документации, но я уверен, что должен быть способ сделать это.

3 ответа

Решение

Вы не можете получить такую ​​информацию от UIImagePickerController если это то, что вы спрашиваете.

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

Перечислите и получите последнее изображение и его миниатюру.

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");
}];

Инфраструктура библиотеки активов устарела с iOS 9.0. Вместо этого используйте среду Photos, которая в iOS 8.0 и более поздних версиях предоставляет больше возможностей и повышает производительность для работы с библиотекой фотографий пользователя.

Проверьте структуру Фотографии и проверьте: PHAsset, PHAssetCollection и PHCollectionList, в зависимости от ваших потребностей.

Другие вопросы по тегам