美文网首页
iOS photos 拿取"最近项目"相册里的照片

iOS photos 拿取"最近项目"相册里的照片

作者: 怕腥的鱼 | 来源:发表于2019-11-18 15:04 被阅读0次

    之前,我们通常都是取iOS系统相册里的照片,一般都是这种方式

    PHFetchOptions *allPhotosOptions = [[PHFetchOptions alloc] init];
        // 按创建时间升序
    allPhotosOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]];
        // 获取所有照片(按创建时间升序)
    PHFetchResult *allPhotos = [PHAsset fetchAssetsWithOptions:allPhotosOptions];
    
    for (PHAsset *asset in allPhotos) {
            if (asset.mediaType ==  PHAssetMediaTypeImage) {
                 file.pickerType = XLPickerFileTypeImage;
                [photos addObject:file];
            }else  if (asset.mediaType ==  PHAssetMediaTypeVideo){
                 file.pickerType = XLPickerFileTypeVideo;
                [videos addObject:file];
            }
        }
    

    然而后来发现,大部分的场景是需要获取最近项目的文件排序(虽然系统相册里包含了所有照片),一些APP都是这么做的,比如微信,QQ等

    自己尝试了一些方法,发现加 sortDescriptors的排序方式,就是各种不行,总是和相册里的排序方式不同。后面的方式中,发现把sortDescriptors 去除,默认就是最近项目的逆序,然后倒过来不就OK了吗? 话不多说,酸菜,上代码!

    PHFetchOptions *allPhotosOptions = [[PHFetchOptions alloc] init];
        // 按创建时间升序
    //    allPhotosOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]];
        // 获取所有照片(按创建时间升序)
        PHFetchResult *allPhotos = [PHAsset fetchAssetsWithOptions:allPhotosOptions];
        
        [allPhotos enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
           PHAsset *asset = (PHAsset *)obj;
           if (asset.mediaType ==  PHAssetMediaTypeImage) {
               file.pickerType = XLPickerFileTypeImage;
               [photos addObject:file];
           }else  if (asset.mediaType ==  PHAssetMediaTypeVideo){
               file.pickerType = XLPickerFileTypeVideo;
               [videos addObject:file];
           }
       }];
    

    相关文章

      网友评论

          本文标题:iOS photos 拿取"最近项目"相册里的照片

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