Обсуждение

Обсуждение

При работе с делегатом инструмента для выбора изображений необходимо учитывать пару немаловажных аспектов. Два делегатных метода вызываются у объекта-делегата контроллера для выбора изображений. Метод imagePickerController: didFinishPickingMediaWithInfo: вызывается, когда пользователь завершает работу с инструментом выбора изображений (то есть делает снимок и наконец нажимает кнопку). В свою очередь, метод imagePickerControllerDidCancel: вызывается в случае, когда операция с инструментом выбора изображений отменяется.

Кроме того, метод делегата imagePickerController: didFinishPickingMediaWithInfo: содержит данные о том предмете, который был отснят пользователем, независимо от того, изображение это или видеоданные. Параметр didFinishPickingMediaWithInfo — это словарь значений, сообщающий, что именно было отснято в инструменте выбора изображений плюс метаданные отснятого контента и другую полезную информацию. Работу в этом методе следует начать со считывания значения ключа UIImagePickerControllerMediaType из этого словаря. Объект для данного ключа представляет собой экземпляр NSString и может принимать одно из следующих значений:

• kUTTypeImage — фотография, сделанная камерой;

• kUTTypeMovie — видеоролик, отснятый камерой.

Значения kUTTypeImage и kUTTypeMovie доступны во фреймворке Mobile Core Services и относятся к типу CFStringRef. При необходимости можно просто привести тип этих значений к NSString.

Определив тип ресурса, созданного камерой (то есть узнав, идет речь о фотографии или видеоролике), можно получить доступ к свойствам этого ресурса, вновь воспользовавшись параметром словаря didFinishPickingMediaWithInfo.

При работе с изображениями (kUTTypeImage) можно получить доступ к следующим ключам:

• UIImagePickerControllerMediaMetadata — объектом, хранимым по этому ключу, является объект типа NSDictionary. В этом словаре содержится масса полезной информации об изображении, отснятом пользователем. Подробное обсуждение значений, содержащихся в этом словаре, выходит за рамки этой главы;

• UIImagePickerControllerOriginalImage — объектом, хранимым по этому ключу, является объект типа UIImage. В нем содержится изображение, отснятое пользователем;

• UIImagePickerControllerCropRect — если вы активизировали возможность редактирования (с помощью свойства allowsEditing объекта UIImagePickerController), то в объекте этого ключа будет содержаться прямоугольник, по которому была сделана обрезка;

• UIImagePickerControllerEditedImage — если вы активизировали возможность редактирования (с помощью свойства allowsEditing объекта UIImagePickerController), то в значении этого ключа будет содержаться отредактированное изображение (масштабированное, с измененными размерами).

Для видеороликов (kUTTypeMovie), отснятых пользователем, можно получать доступ к ключу UIImagePickerControllerMediaURL в параметре словаря didFinishPickingMediaWithInfo в методе imagePickerController: didFinishPickingMediaWithInfo:. Значение этого ключа представляет собой объект типа NSURL, содержащий URL видеоролика, отснятого пользователем.

После того как вы получите ссылку на экземпляр UIImage, отснятый пользователем с помощью камеры, можете просто начинать использовать этот экземпляр в своем приложении.

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

Данный текст является ознакомительным фрагментом.



Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

Обсуждение

Из книги автора

Обсуждение Обычно после того, как пользователь успешно снимет фотографию на устройство с iOS, он ожидает, что этот снимок сохранится в его библиотеке фотографий. Однако приложения, не входящие в стандартный комплект программ iOS, могут запросить пользователя сделать снимок


Обсуждение

Из книги автора

Обсуждение Фреймворк Assets Library — удобный посредник между разработчиком и библиотекой фотографий. Как будет указано в разделе 13.6, в iOS SDK вам предоставляются встроенные компоненты графического пользовательского интерфейса, которыми можно пользоваться для доступа к


Обсуждение

Из книги автора

Обсуждение Чтобы пользователь мог выбирать фотоснимки или видеоролики из своей библиотеки фотографий, необходимо установить свойство sourceType экземпляра UIImagePickerController в значение UIImagePickerControllerSourceTypePhotoLibrary и только потом открывать перед пользователем инструмент для выбора


Обсуждение

Из книги автора

Обсуждение Библиотека ресурсов подразделяется на группы. В каждой группе содержатся ресурсы, а каждый ресурс имеет свойства, например URL (универсальные локаторы ресурсов) и объекты представления.Все ресурсы всех типов можно получать из библиотеки ресурсов с помощью


Обсуждение

Из книги автора

Обсуждение Класс UIVideoEditorController, содержащийся в iOS SDK, позволяет программисту вывести на экран перед пользователем специальный интерфейс для редактирования. Все, что требуется сделать, — предоставить URL видеоролика, который предполагается отредактировать, а потом


Обсуждение

Из книги автора

Обсуждение В зависимости от того, на работу в какой версии iOS рассчитано ваше приложение, его можно запускать и выполнять на различных устройствах, где установлены разные версии iOS. Например, вы можете разрабатывать приложение в последней версии iOS SDK, но в качестве целевой


Обсуждение

Из книги автора

Обсуждение Когда приложение переходит в фоновый режим, работа его основного потока приостанавливается. Потоки, которые вы создаете в своем приложении с помощью метода класса detachNewThreadSelector: toTarget: withObject:, относящегося к классу NSThread, также приостанавливаются. Если вы


Обсуждение

Из книги автора

Обсуждение Многие приложения, ежедневно поступающие на рынок App Store, обладают возможностями соединения с теми или иными серверами. Некоторые выбирают с сервера данные для обновления, другие отсылают информацию на сервер и т. д. В течение долгого времени в iOS существовал


Обсуждение

Из книги автора

Обсуждение В iOS приложение может запросить продолжить воспроизведение своих аудиофайлов, даже если оно само переходит в фоновый режим. В этом разделе мы воспользуемся плеером AVAudioPlayer, который прост и удобен в обращении. Наша задача — запустить аудиоплеер и воспроизвести


Обсуждение

Из книги автора

Обсуждение Когда приложение работает в приоритетном режиме, можно получать от экземпляра CLLocationManager делегатные сообщения, информирующие вас о том, что iOS обнаружила перемещение устройства на новое место. Однако если приложение переходит в фоновый режим и становится


Обсуждение

Из книги автора

Обсуждение Допустим, пустое приложение iOS (то есть приложение всего с одним окном, для которого еще не написан код) впервые запускается на устройстве с iOS, поддерживающем работу в многозадачном режиме. Оно запускается именно впервые, а не возвращается из фонового режима в


Обсуждение

Из книги автора

Обсуждение При работе с приложениями, которые используют класс NSURLConnection, но, уходя в фоновый режим, не запрашивают у iOS дополнительного времени, обращаться с соединениями не составляет никакого труда. Рассмотрим на примере, как будет действовать асинхронное соединение,


Обсуждение

Из книги автора

Обсуждение Пока ваше приложение работает в фоновом режиме, может произойти многое! Например, пользователь может вдруг изменить локализацию устройства с iOS на странице Settings (Настройки) и задать, к примеру, испанский язык вместо английского. Приложения могут


Обсуждение

Из книги автора

Обсуждение В приложениях, написанных для iOS, файл пакета настроек может быть предоставлен пользователю для внесения собственных настроек. Эти настройки будут доступны пользователю в приложении (Settings) на устройстве. Чтобы лучше понять, как работает этот механизм,


Обсуждение

Из книги автора

Обсуждение Пуш-уведомления похожи на локальные уведомления тем, что позволяют сообщать пользователю определенную информацию, даже если ваше приложение неактивно при поступлении уведомления. В то время как локальные уведомления назначаются самим приложением,