Как предотвратить появление скрытого альбома на CTAssetsPickerController


Я использую CTAssetsPickerController https://github.com/chiunam/CTAssetsPickerController для импорта изображений из приложения "Фотографии". Я хочу отключить импорт из "скрытого" альбома, который может быть у некоторых пользователей. Если у вас есть приложение What'S и скрытый альбом, вы заметите, что вы не можете импортировать из этого альбома. Я хочу быть в состоянии сделать то же самое, но искал в течение нескольких часов и пока ничего не получил. Ценю вашу помощь

 - (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];
    });
}];
2 3

2 ответа:

Глядя на РЕПО для CTAssetsPickerController, кажется, что вы можете установить тип альбома, установив свойство под названием assetCollectionSubtype в массив целочисленных значений, соответствующих перечислению PHAssetCollectionSubtype от Apple. 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;
}

Скрытый альбом по-прежнему отображается, но импорт из него отключен.