首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS8 PhotoKit,有些专辑找不到

iOS8 PhotoKit,有些专辑找不到
EN

Stack Overflow用户
提问于 2017-01-04 11:10:13
回答 1查看 78关注 0票数 1

当我使用PhotoKit创建我的相册时,我的项目中没有所有的相册,从计算机导入的一些相册无法搜索。我将发布我的代码如下。

代码语言:javascript
复制
//get system albums
PHImageRequestOptions * options = [[PHImageRequestOptions alloc] init];
options.networkAccessAllowed = YES;
options.synchronous = YES;
KVPhotoAlbum * userAlum = nil;
PHCachingImageManager * manager = [[PHCachingImageManager alloc] init];
PHFetchResult * systemAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];
for (id object in systemAlbums) {
    if ([object isKindOfClass:[PHAssetCollection class]]) {
        PHAssetCollection * collection = (PHAssetCollection*)object;
        if (collection.assetCollectionSubtype == PHAssetCollectionSubtypeSmartAlbumVideos) {
            continue;   
        }
        //get photo
        PHFetchResult * imageResults = [PHAsset fetchAssetsInAssetCollection:collection options:nil];
        if (imageResults.count) {
            KVPhotoAlbum * album = [[KVPhotoAlbum alloc] init];
            album.collection = collection;
            album.title = [collection valueForKey:@"localizedTitle"];
            album.photoCount = imageResults.count;
            if (collection.assetCollectionSubtype == PHAssetCollectionSubtypeSmartAlbumUserLibrary) {
                //camera
                userAlum = album;
            }else {
                [_albums addObject:album];
            }
            PHAsset * asset = [imageResults lastObject];
            [manager requestImageForAsset:asset targetSize:CGSizeMake(60, 60) contentMode:PHImageContentModeDefault options:options resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {
                album.image = result;
            }];
        }
    }
}
//get albums created by user
PHFetchResult * customAlbums = [PHCollectionList fetchTopLevelUserCollectionsWithOptions:nil];
for (id object in customAlbums) {
    if ([object isKindOfClass:[PHAssetCollection class]]) {
        PHAssetCollection * collection = (PHAssetCollection*)object;
        if (collection.assetCollectionSubtype == PHAssetCollectionSubtypeSmartAlbumVideos) {
            continue;   
        }
        //get photo
        PHFetchResult * imageResults = [PHAsset fetchAssetsInAssetCollection:collection options:nil];
        if (imageResults.count) {
            KVPhotoAlbum * album = [[KVPhotoAlbum alloc] init];
            album.collection = collection;
            album.title = [collection valueForKey:@"localizedTitle"];
            album.photoCount = imageResults.count;
            [_albums addObject:album];
            PHAsset * asset = [imageResults lastObject];
            [manager requestImageForAsset:asset targetSize:CGSizeMake(60, 60) contentMode:PHImageContentModeDefault options:options resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {
                album.image = result;
            }];
        }
    }
}

太多的代码,我必须添加更多的细节。

EN

回答 1

Stack Overflow用户

发布于 2017-01-06 11:01:06

我自己解决的,现在我给你指路。有一个相册类型,"PHAssetCollectionTypeAlbum",它可以搜索这些从计算机导入的相册。

代码语言:javascript
复制
PHFetchResult * importAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAny options:nil];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41455640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档