美文网首页
iOS 保存自定义相册

iOS 保存自定义相册

作者: huxinwen | 来源:发表于2019-12-26 18:02 被阅读0次
    #pragma mark - 保存图片到自定义相册
    - (void)saveImageIntoAlbum
    {
        // 获得相片
        PHFetchResult<PHAsset *> *createdAssets = self.createdAssets;
        if (createdAssets == nil) {
            [SVProgressHUD showErrorWithStatus:@"保存图片失败!"];
            return;
        }
    
        // 获得相册
        PHAssetCollection *createdCollection = self.createdCollection;
        if (createdCollection == nil) {
            [SVProgressHUD showErrorWithStatus:@"创建或者获取相册失败!"];
            return;
        }
    
        // 添加刚才保存的图片到【自定义相册】
        NSError *error = nil;
        [[PHPhotoLibrary sharedPhotoLibrary] performChangesAndWait:^{
            PHAssetCollectionChangeRequest *request = [PHAssetCollectionChangeRequest changeRequestForAssetCollection:createdCollection];
            [request insertAssets:createdAssets atIndexes:[NSIndexSet indexSetWithIndex:0]];
        } error:&error];
    
        // 最后的判断
        if (error) {
            [SVProgressHUD showErrorWithStatus:@"保存图片失败!"];
        } else {
            [SVProgressHUD showSuccessWithStatus:@"保存图片成功!"];
        }
    }
    #pragma mark - 获得当前App对应的自定义相册
    - (PHAssetCollection *)createdCollection
    {
        // 获得APP名字
        NSString *title = [NSBundle mainBundle].infoDictionary[(__bridge NSString *)kCFBundleNameKey];
    
        // 抓取所有的自定义相册
        PHFetchResult<PHAssetCollection *> *collections = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];
    
        // 查找当前App对应的自定义相册
        for (PHAssetCollection *collection in collections) {
            if ([collection.localizedTitle isEqualToString:title]) {
                return collection;
            }
        }
    
        /** 当前App对应的自定义相册没有被创建过 **/
        // 创建一个【自定义相册】
        NSError *error = nil;
        __block NSString *createdCollectionID = nil;
        [[PHPhotoLibrary sharedPhotoLibrary] performChangesAndWait:^{
            createdCollectionID = [PHAssetCollectionChangeRequest creationRequestForAssetCollectionWithTitle:title].placeholderForCreatedAssetCollection.localIdentifier;
        } error:&error];
    
        if (error) return nil;
    
        // 根据唯一标识获得刚才创建的相册
        return [PHAssetCollection fetchAssetCollectionsWithLocalIdentifiers:@[createdCollectionID] options:nil].firstObject;
    }
    #pragma mark - 获得相片
    - (PHFetchResult<PHAsset *> *)createdAssets
    {
        NSError *error = nil;
        __block NSString *assetID = nil;
    
        // 保存图片到【相机胶卷】
        [[PHPhotoLibrary sharedPhotoLibrary] performChangesAndWait:^{
            assetID = [PHAssetChangeRequest creationRequestForAssetFromImage:self.imageView.image].placeholderForCreatedAsset.localIdentifier;
        } error:&error];
    }
    

    相关文章

      网友评论

          本文标题:iOS 保存自定义相册

          本文链接:https://www.haomeiwen.com/subject/hteloctx.html