Выберите несколько изображений из библиотеки фотографий

Я собираюсь задать один вопрос, который, возможно, уже задан в миллион раз.

Я делаю приложение для iPad и хочу предоставить пользователям возможность многократно выбирать изображения из своей фотобиблиотеки. У меня уже есть рабочий код для пользователя, чтобы выбрать одно изображение за раз. (не то, что мне нужно)

Я уже загрузил и просмотрел образец кода ELC image picker, но этот код несовместим с iOS 5 или Xcode 4. то есть он имеет ARC и компилирует проблемы слева и справа, используя его release и dealloc повсюду.

Я просто разочарован тем, что яблоко еще не создало встроенные в Api разработчики для этой наиболее часто запрашиваемой функциональности в большинстве наших приложений iPhone / ipad. (не одно, а несколько фотографий)

Есть ли другой образец кода? Поверьте мне, я искал время для поиска.

Хорошо, я понял это. Проблема с библиотекой активов заключается в том, что она дает вам все данные GEO изображения. Для пользователей, использующих ваше приложение, это означает, что они получат подсказку о том, что ваше приложение пытается получить доступ к своему местоположению. Infact все, что вы пытаетесь сделать, это позволить им выбрать несколько изображений из своего фотоальбома. Большинство пользователей будут отключены, думая, что это проблема пиратства. Лучший подход – использовать applis api для imagePickerController. Я знаю, что это позволяет вам выбирать один рисунок за раз, но если вы добавите следующий код, он позволит вам выбрать несколько изображений.

То, как я делаю, позволяет пользователям выбирать фотографии, которые они хотят, сохранить эти файлы в каталоге документов приложения, пока они не нажмут кнопку «Готово». См. Здесь мой пример кода, и, надеюсь, он спасет вас от необходимости проходить через Библиотеку активов

-(IBAction)selectExitingPicture { //Specially for fing iPAD UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; imagePicker.delegate = self; imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; imagePicker.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeImage]; popoverController = [[UIPopoverController alloc] initWithContentViewController:imagePicker]; [popoverController presentPopoverFromRect:CGRectMake(0.0, 0.0, 400.0, 300.0) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; } //Done button on top - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { //NSLog(@"Inside navigationController ..."); if (!doneButton) { doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(saveImagesDone:)]; } viewController.navigationItem.rightBarButtonItem = doneButton; } - (IBAction)saveImagesDone:(id)sender { //NSLog(@"saveImagesDone ..."); [popoverController dismissPopoverAnimated:YES]; } -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage : (UIImage *)image editingInfo:(NSDictionary *)editingInfo { //DONT DISMISS //[picker dismissModalViewControllerAnimated:YES]; //[popoverController dismissPopoverAnimated:YES]; IMAGE_COUNTER = IMAGE_COUNTER + 1; imageView.image = image; // Get the data for the image NSData* imageData = UIImageJPEGRepresentation(image, 1.0); // Give a name to the file NSString* incrementedImgStr = [NSString stringWithFormat: @"UserCustomPotraitPic%d.jpg", IMAGE_COUNTER]; NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString* documentsDirectory = [paths objectAtIndex:0]; // Now we get the full path to the file NSString* fullPathToFile2 = [documentsDirectory stringByAppendingPathComponent:incrementedImgStr]; // and then we write it out [imageData writeToFile:fullPathToFile2 atomically:NO]; } 

// Теперь используйте этот код, чтобы получить выбранные пользователем снимки. Вызовите его из любого места в своем коде

  NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask ,YES); NSString* documentsPath = [paths objectAtIndex:0]; NSString* dataFile = [documentsPath stringByAppendingPathComponent:@"UserCustomPotraitPic1.jpg"]; NSData *potraitImgData = [NSData dataWithContentsOfFile:dataFile]; backgroundImagePotrait = [UIImage imageWithData:potraitImgData]; 

Apple предоставила api для этого. Он называется ALAssetsLibrary .

Используя это, вы можете выбрать несколько изображений / видео и другие операции, которые вы используете, используя приложение для фотографий на устройстве iOS.

Как и в документации Apple говорит:

Структура библиотеки активов

Представленный в iOS 4.0, библиотека библиотеки объектов (AssetsLibrary.framework) предоставляет интерфейс на основе запросов для извлечения фотографий и видео с устройства пользователя. Используя эту структуру, вы можете получить доступ к тем же активам, которые обычно управляются приложением «Фотографии», включая элементы в альбоме сохраненных фотографий пользователя и любые фотографии и видео, которые были импортированы на устройство. Вы также можете сохранить новые фотографии и видео обратно в альбом сохраненных фотографий пользователя.

Вот несколько ссылок, где вы можете узнать больше. Теперь для его использования вы можете искать ALAssetsLibrary.

Справочная информация об активах

http://www.fiveminutes.eu/accessing-photo-library-using-assets-library-framework-on-iphone/

Я использую ALAssetsLibrary и закатываю собственный пользовательский интерфейс. Проблема с UIImagePickerController заключается в том, что он говорит, что вы должны отклонить контроллер вида в didFinishPickingMediaWithInfo , поэтому взломать множественный выбор, не отпуская, могут столкнуться с проблемами. Я знаю, что сделал, когда впервые попробовал. Я не могу точно вспомнить, что пошло не так, но были случаи, когда UIImagePickerController просто переставал работать, если я не отклонил его, как говорят документы.

  • IOS: UIDatePicker плохо работает с черным фоном
  • Как вы упорядочиваете переменные, объекты и т. Д. В iOS?
  • NSString не будет конвертироваться в NSURL (NSURL - null)
  • Просмотр представлен с мастер-панели UISplitViewController, не вращающейся при повороте с портрета на альбомный (iPad)
  • "DidChangeSection:" Метод делегата NSfetchedResultsController не вызывается
  • Xcode застрял в «Обработка файлов символов»
  • UITextView не отображается, пока не будет прокручиваться
  • Помогает ли комплект спрайтов в фоновом режиме или в основном потоке? Как это работает?
  • Какова высота, если iAd баннер на iPad с OS4.2?
  • Как установить тело запроса HTTP с помощью AFHTTPRequestOperationManager AFNetwork?
  • Сбой SplitViewController в портретном представлении (ipad)
  • Interesting Posts

    iOS Push to TabBarController

    Есть ли какие-либо уведомления, чтобы до того, как приложение заполнило фон?

    полученная ошибка ", используемая в его собственном начальном значении"

    Получить текущий угол / поворот / радиан для UIview?

    Каковы шаги по созданию подкласса для UIView, который добавляет границу?

    Графики iOS Графическая диаграмма Swift превышает внешний вид

    NSPredicate для регулярного поиска

    Лучшая практика для временных объектов в основных данных?

    Ссылки в приложении IOS Ionic не открываются сразу

    Ionic 2, используя Angular 2 Pipe breaks на iOS- «Невозможно найти переменную: Intl»

    prepareForSegue получает вызов дважды, с попыткой представить <UINavigationController> во время презентации

    (iOS MPMusicPlayerNotification), как получать уведомления, когда приложение находится в фоновом режиме

    Командная строка xcodebuild игнорирует GCC_PREPROCESSOR_DEFINITIONS

    Производительность мобильной сети: какой был бы самый эффективный тип данных для передачи данных с веб-сервера на мобильный телефон?

    Ошибка при обновлении приложения iOS. Msgstr "Этот пакет недействителен. Apple в настоящее время не принимает приложения, созданные с этой версией SDK ».

    Давайте будем гением компьютера.