思路:要创建自己App的自定义相册,首先要获取系统中的所有自定义相册,看这些自定义相册中是否已经包含了我们自己要创建的自定义相册,如果已经包含自然不用再次创建,如果还没有那么就需要我们自己进行创建。注意:iOS中在创建自定义相册之后并不会给我们返回一个相册的对象,还需要我们自己根据一个标识去系统中获取我们创建的自定义相册。
代码:
// 创建自己要创建的自定义相册
- (PHAssetCollection * )createCollection{
// 创建一个新的相册
// 查看所有的自定义相册
// 先查看是否有自己要创建的自定义相册
// 如果没有自己要创建的自定义相册那么我们就进行创建
NSString * title = [NSBundle mainBundle].infoDictionary[(NSString *)kCFBundleNameKey];
PHFetchResult<PHAssetCollection *> *collections = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];
PHAssetCollection * createCollection = nil; // 最终要获取的自己创建的相册
for (PHAssetCollection * collection in collections) {
if ([collection.localizedTitle isEqualToString:title]) { // 如果有自己要创建的相册
createCollection = collection;
break;
}
}
if (createCollection == nil) { // 如果没有自己要创建的相册
// 创建自己要创建的相册
NSError * error1 = nil;
__block NSString * createCollectionID = nil;
[[PHPhotoLibrary sharedPhotoLibrary] performChangesAndWait:^{
NSString * title = [NSBundle mainBundle].infoDictionary[(NSString *)kCFBundleNameKey];
createCollectionID = [PHAssetCollectionChangeRequest creationRequestForAssetCollectionWithTitle:title].placeholderForCreatedAssetCollection.localIdentifier;
} error:&error1];
if (error1) {
NSLog(@"创建相册失败...");
}
// 创建相册之后我们还要获取此相册 因为我们要往进存储相片
createCollection = [PHAssetCollection fetchAssetCollectionsWithLocalIdentifiers:@[createCollectionID] options:nil].firstObject;
}
return createCollection;
}