Чтение онлайн

на главную - закладки

Жанры

iOS. Приемы программирования

Нахавандипур Вандад

Шрифт:

В разделе 13.7 будет рассказано, как использовать такой URL при загрузке в память данных для видеофайла.

13.6. Получение фото и видео из библиотеки фотографий

Постановка задачи

Необходимо предоставить пользователю возможность выбирать фото или видео из своей библиотеки фотографий и использовать их в приложении.

Решение

При работе с объектом UIImagePickerController используйте UIImagePickerControllerSourceTypePhotoLibrary в

качестве типа источника и значение kUTTypeImage или kUTTypeMovie для типа медийной информации:

— (BOOL) isPhotoLibraryAvailable{

return [UIImagePickerController isSourceTypeAvailable:

UIImagePickerControllerSourceTypePhotoLibrary];

}

— (BOOL) canUserPickVideosFromPhotoLibrary{

return [self

cameraSupportsMedia:(__bridge NSString *)kUTTypeMovie

sourceType: UIImagePickerControllerSourceTypePhotoLibrary];

}

— (BOOL) canUserPickPhotosFromPhotoLibrary{

return [self

cameraSupportsMedia:(__bridge NSString *)kUTTypeImage

sourceType: UIImagePickerControllerSourceTypePhotoLibrary];

}

— (void)viewDidAppear:(BOOL)animated{

[super viewDidAppear: animated];

static BOOL beenHereBefore = NO;

if (beenHereBefore){

/* Отображаем элемент для выбора даты только после того, как вызывается

метод viewDidAppear:, что происходит при каждом отображении вида

нашего контроллера вида */

return;

} else {

beenHereBefore = YES;

}

if ([self isPhotoLibraryAvailable]){

UIImagePickerController *controller =

[[UIImagePickerController alloc] init];

controller.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

NSMutableArray *mediaTypes = [[NSMutableArray alloc] init];

if ([self canUserPickPhotosFromPhotoLibrary]){

[mediaTypes addObject:(__bridge NSString *)kUTTypeImage];

}

if ([self canUserPickVideosFromPhotoLibrary]){

[mediaTypes addObject:(__bridge NSString *)kUTTypeMovie];

}

controller.mediaTypes = mediaTypes;

controller.delegate = self;

[self.navigationController presentModalViewController: controller

animated: YES];

}

}

О

том, как реализовать метод cameraSupportsMedia: sourceType:, который используется в этом примере, рассказано в разделе 13.1.

Обсуждение

Чтобы пользователь мог выбирать фотоснимки или видеоролики из своей библиотеки фотографий, необходимо установить свойство sourceType экземпляра UIImagePickerController в значение UIImagePickerControllerSourceTypePhotoLibrary и только потом открывать перед пользователем инструмент для выбора изображений. Кроме того, если вы хотите отфильтровать определенные фотографии или видеоролики из общего числа элементов, представленных пользователю в инструменте для выбора изображений, исключите значение kUTTypeMovie или kUTTypeImage соответственно из списка типов медийной информации, отображаемой в инструменте для выбора изображений (это делается в свойстве mediaTypes).

Учитывайте, что, если установить значение свойства mediaTypes контроллера для выбора изображений в nil, получится пустой массив, который спровоцирует ошибки времени исполнения.

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

См. также

Раздел 13.7.

13.7. Получение ресурсов из библиотеки ресурсов

Постановка задачи

Требуется получить фотографии или видео непосредственно из библиотеки фотографий, не прибегая к использованию каких-либо встроенных компонентов графического пользовательского интерфейса.

Решение

Воспользуйтесь фреймворком Assets Library (Библиотека ресурсов). Выполните следующие шаги.

1. Выделите и инициализируйте объект типа ALAssetsLibrary.

2. Передайте два блоковых объекта методу экземпляра enumerateGroupsWithTypes: usingBlock: failureBlock:, относящемуся к объекту «Библиотека ресурсов». Первый блок получит все группы, ассоциированные с типом, который мы сообщили этому методу. Группы будут относиться к типу ALAssetsGroup. В случае неудачи этой операции во втором блоке будет возвращена ошибка.

3. Воспользуйтесь методом экземпляра enumerateAssetsUsingBlock: каждого группового объекта для перечисления ресурсов, имеющихся в каждой группе. Этот метод принимает единственный параметр — блок, получающий информацию по отдельно взятому ресурсу. Блок, передаваемый в качестве параметра, должен принимать три параметра, первый из которых должен относиться к типу ALAsset.

Поделиться:
Популярные книги

Черный Кровавый Триллиум

Нортон Андрэ
Шедевры фантастики
Фантастика:
фэнтези
4.75
рейтинг книги
Черный Кровавый Триллиум

Вечный. Книга III

Рокотов Алексей
3. Вечный
Фантастика:
фэнтези
попаданцы
рпг
6.20
рейтинг книги
Вечный. Книга III

Культура имеет значение

Хантингтон Самюэль
Научно-образовательная:
культурология
5.50
рейтинг книги
Культура имеет значение

Первый среди равных

Бор Жорж
1. Первый среди Равных
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Первый среди равных

Память Света/Память огня (др. перевод)

Сандерсон Брендон
14. Колесо Времени
Фантастика:
фэнтези
7.50
рейтинг книги
Память Света/Память огня (др. перевод)

Брат за брата

Колычев Владимир Григорьевич
Детективы:
криминальные детективы
6.62
рейтинг книги
Брат за брата

Вечный. Книга V

Рокотов Алексей
5. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга V

Линия огня

Орехов Василий
9. S.T.A.L.K.E.R.
Фантастика:
боевая фантастика
8.74
рейтинг книги
Линия огня

Бояръ-Аниме. Газлайтер. Том 35

Володин Григорий Григорьевич
35. История Телепата
Фантастика:
аниме
боевая фантастика
фэнтези
6.40
рейтинг книги
Бояръ-Аниме. Газлайтер. Том 35

2012. Хроника апокалипсиса

Медведев Антон Николаевич
Фантастика:
боевая фантастика
6.75
рейтинг книги
2012. Хроника апокалипсиса

Камень. Книга 4

Минин Станислав
4. Камень
Фантастика:
боевая фантастика
7.77
рейтинг книги
Камень. Книга 4

Мы - истребители

Поселягин Владимир Геннадьевич
2. Я - истребитель
Фантастика:
альтернативная история
8.55
рейтинг книги
Мы - истребители

Волшебница-самозванка

Набокова Юлия
1. Волшебница-самозванка
Фантастика:
юмористическое фэнтези
8.27
рейтинг книги
Волшебница-самозванка

100 великих замков

Ионина Надежда Алексеевна
100 великих
Научно-образовательная:
история
прочая научная литература
5.00
рейтинг книги
100 великих замков