簡體   English   中英

iOS8 PhotoKit,有些專輯無法發現

[英]iOS8 PhotoKit, some albums can't be finded

當我使用PhotoKit創建我的專輯時,我的項目中沒有所有專輯,從計算機導入的某些專輯無法搜索。我將發布我的代碼。

//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;
            }];
        }
    }
}

代碼太多,我必須添加更多細節。

我自己解決了,現在我指明了方向。 有一個專輯類型,“PHAssetCollectionTypeAlbum”,這可以搜索從計算機導入的這些專輯。

PHFetchResult * importAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAny options:nil];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM