如何防止隐藏相册显示在 CTAssetsPickerController 上

How to prevent hidden album from showing up on CTAssetsPickerController

我正在使用 CTAssetsPickerController https://github.com/chiunam/CTAssetsPickerController 从照片应用导入图像。我想禁止从某些用户可能拥有的 'Hidden' 相册导入。如果您有 What's App 和一个隐藏的相册,您会注意到您无法从所述相册中导入。我希望能够做同样的事情,但一直在寻找几个小时,但还没有找到任何地方。感谢您的帮助

 - (void)showImagePickerForSourceType:(UIImagePickerControllerSourceType)sourceType {
// Create the image picker
// request authorization status
[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status){
    dispatch_async(dispatch_get_main_queue(), ^{

        // init picker
        self.imagePickerController = [[CTAssetsPickerController alloc] init];

        // set delegate
        self.imagePickerController.delegate = self;
        // create options for fetching photo only
        PHFetchOptions *fetchOptions = [PHFetchOptions new];
        fetchOptions.predicate = [NSPredicate predicateWithFormat:@"mediaType == %d", PHAssetMediaTypeImage];

        // assign options
        self.imagePickerController.assetsFetchOptions = fetchOptions;

        // Optionally present picker as a form sheet on iPad
        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
            self.imagePickerController.modalPresentationStyle = UIModalPresentationFormSheet;

        // present picker
        [self presentViewController:self.imagePickerController animated:YES completion:nil];
    });
}];

查看 CTAssetsPickerController 的存储库,您似乎可以通过将名为 assetCollectionSubtype 的 属性 设置为整数值数组来设置相册类型,对应于 Apple 的 PHAssetCollectionSubtype 枚举。 https://developer.apple.com/library/ios/documentation/Photos/Reference/PHAssetCollection_Class/#//apple_ref/c/tdef/PHAssetCollectionSubtype

所以经过更多的研究,我发现框架有一个委托方法,可以让你禁用资产。

为了解决我的问题,我实现了这个方法:

- (BOOL)assetsPickerController:(CTAssetsPickerController *)picker shouldEnableAsset:(PHAsset *)asset {
     return !asset.isHidden;
}

隐藏的相册仍然显示,但无法从中导入。