Вандад Нахавандипур - iOS. Приемы программирования

Тут можно читать онлайн Вандад Нахавандипур - iOS. Приемы программирования - бесплатно ознакомительный отрывок. Жанр: comp-programming, издательство Питер, год 2014. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    iOS. Приемы программирования
  • Автор:
  • Жанр:
  • Издательство:
    Питер
  • Год:
    2014
  • Город:
    Санкт-Петербург
  • ISBN:
    978-5-496-01016-0
  • Рейтинг:
    3.9/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Вандад Нахавандипур - iOS. Приемы программирования краткое содержание

iOS. Приемы программирования - описание и краткое содержание, автор Вандад Нахавандипур, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Книга, которую вы держите в руках, представляет собой новый, полностью переписанный сборник приемов программирования по работе с iOS. Он поможет вам справиться с наболевшими проблемами, с которыми приходится сталкиваться при разработке приложений для iPhone, iPad и iPod Touch. Вы быстро освоите всю информацию, необходимую для начала работы с iOS 7 SDK, в частности познакомитесь с решениями для добавления в ваши приложения реалистичной физики или движений — в этом вам помогут API UIKit Dynamics.

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

iOS. Приемы программирования - читать онлайн бесплатно ознакомительный отрывок

iOS. Приемы программирования - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Вандад Нахавандипур
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

return;

} else {

beenHereBefore = YES;

}

if ([self isCameraAvailable] &&

[self doesCameraSupportTakingPhotos]){

UIImagePickerController *controller =

[[UIImagePickerController alloc] init];

controller.sourceType = UIImagePickerControllerSourceTypeCamera;

controller.mediaTypes = @[(__bridge NSString *)kUTTypeMovie];

controller.allowsEditing = YES;

controller.delegate = self;

/* Записываем видео в высоком качестве. */

controller.videoQuality = UIImagePickerControllerQualityTypeHigh;

/* Позволяем записать только 30 секунд видео. */

controller.videoMaximumDuration = 30.0f;

[self.navigationController presentModalViewController: controller

animated: YES];

} else {

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

}

}

См. также

Раздел 13.1.

13.4. Сохранение снимков в библиотеке фотографий

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

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

Решение

Воспользуйтесь процедурой UIImageWriteToSavedPhotosAlbum:

— (void) imageWasSavedSuccessfully:(UIImage *)paramImage

didFinishSavingWithError:(NSError *)paramError

contextInfo:(void *)paramContextInfo{

if (paramError == nil){

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

contextInfo:(void *)paramContextInfo{

if (paramError == nil){

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

} else {

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

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

}

}

Если вы попытаетесь воспользоваться процедурой UIImageWriteToSavedPhotosAlbum для сохранения фотоснимка в пользовательской библиотеке фотографий и приложение впервые выполняет эту операцию на данном устройстве, то iOS запросит у пользователя разрешение на такую операцию (рис. 13.1). Таким образом, пользователь может позволить или не позволить приложению сохранять фотографии на устройстве. В конце концов, это пользовательское устройство и мы не можем делать на этом устройстве ничего такого, чего нам не разрешил пользователь. Если пользователь дает разрешение, то процедура UIImageWriteToSavedPhotosAlbum продолжит сохранение изображения. Если разрешение не получено, то селектор обработчика завершения по-прежнему будет вызываться, но параметр didFinishSavingWithError этого селектора будет устанавливаться в валидный экземпляр ошибки.

Рис 131iOS запрашивает у пользователя права доступа прежде чем программа - фото 167

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

Теперь, если пользователь отказывает приложению в праве доступа, все последующие вызовы процедуры UIImageWriteToSavedPhotosAlbum будут неуспешными, пока пользователь вручную не изменит настройки своего устройства (рис. 13.2).

Рис 132Приложению не разрешен доступ к пользовательской библиотеке - фото 168

Рис. 13.2.Приложению не разрешен доступ к пользовательской библиотеке фотографий

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

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Вандад Нахавандипур читать все книги автора по порядку

Вандад Нахавандипур - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


Отзывы читателей о книге iOS. Приемы программирования, автор: Вандад Нахавандипур. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x