美文网首页
如何在不调用ImagePickerController的情况下获

如何在不调用ImagePickerController的情况下获

作者: 柚子姑娘666 | 来源:发表于2018-03-17 15:51 被阅读0次

    #pragma mark -- iOS 8.0 以上获取所有照片用Photos.h这个库

    -(NSMutableArray *)getALLphotosUsingPohotKit

    {

        NSMutableArray *arr = [NSMutableArray array];

        // 所有智能相册

        PHFetchResult *smartAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];

        for (NSInteger i = 0; i < smartAlbums.count; i++) {

            @autoreleasepool {

                // 是否按创建时间排序

                PHFetchOptions *option = [[PHFetchOptions alloc] init];

                option.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]];

                option.predicate = [NSPredicate predicateWithFormat:@"mediaType == %ld", PHAssetMediaTypeImage];

                PHCollection *collection = smartAlbums[i];

                //遍历获取相册

                if ([collection isKindOfClass:[PHAssetCollection class]]) {

                    if ([collection.localizedTitle isEqualToString:@"所有照片"]) {

                        PHAssetCollection *assetCollection = (PHAssetCollection *)collection;

                        PHFetchResult *fetchResult = [PHAsset fetchAssetsInAssetCollection:assetCollection options:nil];

                        NSArray *assets;

                        if (fetchResult.count > 0) {

                            // 某个相册里面的所有PHAsset对象

                            assets = [self getAllPhotosAssetInAblumCollection:assetCollection ascending:YES ];

                            [arr addObjectsFromArray:assets];

                        }

                    }

                }

            }

        }

        //返回所有照片内的所有照片

        return arr;

    }

    #pragma mark - <  获取相册里的所有图片的PHAsset对象  >

    - (NSArray *)getAllPhotosAssetInAblumCollection:(PHAssetCollection *)assetCollection ascending:(BOOL)ascending

    {

        // 存放所有图片对象

        NSMutableArray *assets = [NSMutableArray array];

        // 是否按创建时间排序

        PHFetchOptions *option = [[PHFetchOptions alloc] init];

        option.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:ascending]];

        option.predicate = [NSPredicate predicateWithFormat:@"mediaType == %ld", PHAssetMediaTypeImage];

        // 获取所有图片对象

        PHFetchResult *result = [PHAsset fetchAssetsInAssetCollection:assetCollection options:option];

        // 遍历

        [result enumerateObjectsUsingBlock:^(PHAsset *asset, NSUInteger idx, BOOL * _Nonnull stop) {

            [assets addObject:asset];

        }];

        return assets;

    }

    调用方法:

    其中,filename就是图片名字;格式:IMG_0776.JPG

    相关文章

      网友评论

          本文标题:如何在不调用ImagePickerController的情况下获

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