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

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

Жанры

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

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

Шрифт:

NSLog(@"Image was saved successfully.");

} else {

NSLog(@"An error happened while saving the image.");

NSLog(@"Error = %@", paramError);

}

}

— (void) imagePickerController:(UIImagePickerController *)picker

didFinishPickingMediaWithInfo:(NSDictionary *)info{

NSLog(@"Picker returned successfully.");

NSLog(@"%@", info);

NSString *mediaType = [info objectForKey:

UIImagePickerControllerMediaType];

if ([mediaType isEqualToString:(__bridge NSString *)kUTTypeImage]){

UIImage *theImage = nil;

if ([picker allowsEditing]){

theImage = [info objectForKey: UIImagePickerControllerEditedImage];

} else {

theImage = [info objectForKey: UIImagePickerControllerOriginalImage];

}

SEL selectorToCall = @selector(imageWasSavedSuccessfully:

didFinishSavingWithError: contextInfo:);

UIImageWriteToSavedPhotosAlbum(theImage,

self,

selectorToCall,

NULL);

}

[picker dismissModalViewControllerAnimated: YES];

}

— (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{

NSLog(@"Picker was cancelled");

[picker dismissModalViewControllerAnimated: YES];

}

— (void)viewDidAppear:(BOOL)animated{

[super viewDidAppear: animated];

static BOOL beenHereBefore = NO;

if (beenHereBefore){

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

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

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

return;

} else {

beenHereBefore = YES;

}

if ([self isCameraAvailable] &&

[self doesCameraSupportTakingPhotos]){

UIImagePickerController *controller =

[[UIImagePickerController alloc] init];

controller.sourceType = UIImagePickerControllerSourceTypeCamera;

NSString *requiredMediaType = (__bridge NSString *)kUTTypeImage;

controller.mediaTypes = [[NSArray alloc]

initWithObjects: requiredMediaType, nil];

controller.allowsEditing = YES;

controller.delegate = self;

[self.navigationController presentModalViewController: controller

animated: YES];

} else {

NSLog(@"Camera is not available.");

}

}

Методы isCameraAvailable

и doesCameraSupportTakingPhotos, использованные в данном примере, подробно рассмотрены в разделе 13.1.

Обсуждение

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

Но если вы решите, что хотите сохранить экземпляр UIImage в библиотеке фотографий на пользовательском устройстве, то можете применить функцию UIImageWriteToSavedPhotosAlbum. Она принимает четыре параметра:

• изображение;

• объект, который станет получать уведомления всякий раз, когда изображение будет полностью сохранено;

• параметр, указывающий селектор (этот селектор будет вызываться применительно к целевому объекту). Данный параметр идет вторым, а селектор вызывается по завершении операции;

• значение контекста, передаваемое указанному селектору, как только операция будет завершена.

Второй, третий и четвертый параметры для этой процедуры указывать не обязательно. Если вы зададите и второй, и третий параметры, то четвертый параметр все равно останется опциональным. Вот, например, селектор, который я выбрал для нашего примера:

— (void) imageWasSavedSuccessfully:(UIImage *)paramImage

didFinishSavingWithError:(NSError *)paramError

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

Имперец. Том 5

Романов Михаил Яковлевич
4. Имперец
Фантастика:
попаданцы
альтернативная история
аниме
6.00
рейтинг книги
Имперец. Том 5

Ветер времени

Балашов Дмитрий Михайлович
5. Государи московские
Научно-образовательная:
история
7.00
рейтинг книги
Ветер времени

Последний император

Пу И
Мой 20 век
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Последний император

Демон-Апостол

Сальваторе Роберт Энтони
3. Демонические войны
Фантастика:
фэнтези
7.50
рейтинг книги
Демон-Апостол

Годы прострации

Таунсенд Сьюзан
7. Дневники Адриана Моула
Юмор:
юмористическая проза
4.00
рейтинг книги
Годы прострации

Стоп. Снято! Фотограф СССР

Токсик Саша
Фантастика:
попаданцы
альтернативная история
5.25
рейтинг книги
Стоп. Снято! Фотограф СССР

История одного гоблина. Два в одном

Болотов Андрей Тимофеевич
2. История одного гоблина
Фантастика:
фэнтези
юмористическое фэнтези
7.00
рейтинг книги
История одного гоблина. Два в одном

Крылья ворона

Каннингем Элейн
Забытые Королевства
Фантастика:
фэнтези
7.43
рейтинг книги
Крылья ворона

Тишина

Бондарев Юрий Васильевич
Проза:
современная проза
8.40
рейтинг книги
Тишина

Восставший из пепла

Злотников Роман Валерьевич
2. Вечный
Фантастика:
боевая фантастика
9.31
рейтинг книги
Восставший из пепла

Том 9. По экватору. Таинственный незнакомец

Твен Марк
Проза:
классическая проза
6.25
рейтинг книги
Том 9. По экватору. Таинственный незнакомец

Призраки в Сети

де Линт Чарльз
Фантастика:
ужасы и мистика
6.40
рейтинг книги
Призраки в Сети

Последний реанорец. Том XII – Часть II

Павлов Вел
12. Высшая Речь
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний реанорец. Том XII – Часть II

Охотник за головами

Вайс Александр
1. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Охотник за головами