关于Photos库的简单应用,筛选、获取、GIF、livePhoto、video、GIF存储到相册等


写在最开始

由于本项目中对UI还原度要求较高,交互要求完全还原,用别人封装的改起来总归是有些别扭;为了后续方便自己实现定制UI交互等,决定自己从系统API开始封装一套相册资源选择器。

而AL用起来则到处报被弃用的⚠️,想逼死我这个强迫症啊~
然后就选择了PH,总的来说和AL比较类似,但是很多东西实现起来却是缺这少那的。虽说磨了有段时间,但目前用起来效果&性能尚可;下边分享点小坑和核心代码。

  • 一、简单实现拉取所有相册资源(照片视频等),并保持创建时间排序
  • 二、筛选大小,剔除不符合规则视频
  • 三、gif区分、处理以及一些猜测(希望有朋友能帮忙验证最后的猜测)
  • 四、网络GIF图存储到相册

一、 其实一开始就遇到了个问题,不能同时获取照片和视频。。。
最后为分别拉出加到同一个数组之后,进行按时间排序🤡。

NSMutableArray<PHAsset *> *assets = [NSMutableArray array];
    PHFetchOptions *option = [[PHFetchOptions alloc] init];
    //ascending 为YES时,按照照片的创建时间升序排列;为NO时,则降序排列
    option.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]];
    PHFetchResult *result = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options:option];
    WS(ws);
    [result enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        
        PHAsset *asset = (PHAsset *)obj;
        [ws.allAssetItemModelArr addObject:[YTMediaSelectorItemModel initWithAssetType:1 itemAsset:asset withAssetLocalIdentifier:asset.localIdentifier]];
        [assets addObject:asset];
    }];
    PHFetchOptions *option = [[PHFetchOptions alloc] init];
    option.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]];
    PHFetchResult *result = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeVideo options:option];
    NSLog(@"拉取到 %ld 个视频资源\n", result.count);
    WS(ws);
    [result enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值