PHPhotoLibrary操作

导入系统库头文件 :

import <Photos/Photos.h>


1.获取对应名称的相册

/**
albumName:相册名称,没有则创建该相册
*/
+ (PHAssetCollectionChangeRequest *)photoCollectionWithAlbumName:(NSString *)albumName {
    // 创建搜索集合
    PHFetchResult *result = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];
    
    //遍历相册,获取对应相册的changeRequest
    for (PHAssetCollection *assetCollection in result) {
        if ([assetCollection.localizedTitle containsString:albumName]) {
            PHAssetCollectionChangeRequest *collectionRuquest = [PHAssetCollectionChangeRequest changeRequestForAssetCollection:assetCollection];
            return collectionRuquest;
        }
    }
    
    //不存在,创建albumName为名的相册changeRequest
    PHAssetCollectionChangeRequest *collectionRequest = [PHAssetCollectionChangeRequest creationRequestForAssetCollectionWithTitle:albumName];
    return collectionRequest;
}

2.沙盒视频写入相册

/**
videoURL:视频的沙盒路径
completionHandler:操作回调
*/
+ (void)lxj_writeVideoToAssetsLibrary:(NSURL *)videoURL completionHandler:(nullable void(^)(BOOL success, NSError *__nullable error))completionHandler{
    
    [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
        //请求创建一个Asset
        PHAssetChangeRequest *assetRequest = [PHAssetChangeRequest creationRequestForAssetFromVideoAtFileURL:videoURL];
        //视频存储的相册
        PHAssetCollectionChangeRequest *collectonRequest = [PHPhotoLibrary photoCollectionWithAlbumName:@"相册名"];
        //为Asset创建一个占位符,放到相册编辑请求中
        PHObjectPlaceholder *placeHolder = [assetRequest placeholderForCreatedAsset];
        //相册中添加视频
        [collectonRequest addAssets:@[placeHolder]];
        
    } completionHandler:^(BOOL success, NSError *error) {
        if (completionHandler) {
            completionHandler(success,error);
        }
    }];
    
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容