Как предотвратить появление скрытого альбома на 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 ответа:
Глядя на РЕПО для 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; }
Скрытый альбом по-прежнему отображается, но импорт из него отключен.