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

Интервал:

Закладка:

Сделать

См. также

Раздел 13.7.

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

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

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

Решение

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

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

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

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

4. Получив объекты ALAsset, доступные в каждой группе, вы можете затем найти различные свойства каждого ресурса: его тип, доступные URL и т. д. Для получения этих свойств примените метод экземпляра valueForProperty:, относящийся к каждому ресурсу типа ALAsset. Возвращаемое значение этого метода в зависимости от типа передаваемого ему параметра может представлять собой NSDictionary, NSString или любой другой тип объекта. Вскоре мы рассмотрим общие свойства, которые могут быть получены от любого ресурса.

5. Вызовите метод экземпляра defaultRepresentation каждого объекта типа ALAsset, чтобы получить его объект представления (Representation Object) типа ALAssetRepresentation. Каждый ресурс из библиотеки ресурсов может иметь более одного представления. Например, фотография по умолчанию может иметь представление в формате PNG, но, кроме того, обладать и представлением JPEG. С помощью метода defaultRepresentation каждого ресурса типа ALAsset можно получить объект ALAssetRepresentation, а потом использовать его для получения различных представлений каждого ресурса (при наличии таких представлений).

6. Пользуйтесь методами size и методами экземпляра getBytes: fromOffset: length: error: каждого представления ресурса для загрузки данных о представлении ресурса. Затем можно записать прочитанные байты в объект NSData или выполнить любую другую операцию, необходимую в ходе работы приложения. Кроме того, при работе с фотографиями можно использовать методы экземпляра fullResolutionImage, fullScreenImage и CGImageWithOptions: каждого представления, чтобы получать изображения типа CGImageRef. Потом можно создать UIImage из CGImageRef с помощью метода класса imageWithCGImage:, относящегося к классу UIImage:

— (void)viewDidAppear:(BOOL)animated{

[super viewDidAppear: animated];

static BOOL beenHereBefore = NO;

if (beenHereBefore){

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

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

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

return;

} else {

beenHereBefore = YES;

}

self.assetsLibrary = [[ALAssetsLibrary alloc] init];

[self.assetsLibrary

enumerateGroupsWithTypes: ALAssetsGroupAll

usingBlock: ^(ALAssetsGroup *group, BOOL *stop) {

[group enumerateAssetsUsingBlock: ^(ALAsset *result,

NSUInteger index,

BOOL *stop) {

/* Получаем тип ресурса. */

NSString *assetType = [result valueForProperty: ALAssetPropertyType];

if ([assetType isEqualToString: ALAssetTypePhoto]){

NSLog(@"This is a photo asset");

}

else if ([assetType isEqualToString: ALAssetTypeVideo]){

NSLog(@"This is a video asset");

}

else if ([assetType isEqualToString: ALAssetTypeUnknown]){

NSLog(@"This is an unknown asset");

}

/* Получаем все URL для ресурса. */

NSDictionary *assetURLs =

[result valueForProperty: ALAssetPropertyURLs];

NSUInteger assetCounter = 0;

for (NSString *assetURLKey in assetURLs){

assetCounter++;

NSLog(@"Asset URL %lu = %@",

(unsigned long)assetCounter,

[assetURLs valueForKey: assetURLKey]);

}

/* Получаем объект представления ресурса. */

ALAssetRepresentation *assetRepresentation =

[result defaultRepresentation];

NSLog(@"Representation Size = %lld", [assetRepresentation size]);

}];

}

failureBlock: ^(NSError *error) {

NSLog(@"Failed to enumerate the asset groups.");

}];

}

Обсуждение

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

Все ресурсы всех типов можно получать из библиотеки ресурсов с помощью константы ALAssetsGroupAll. Она передается параметру enumerateGroupsWithTypes метода экземпляра enumerateGroupsWithTypes: usingBlock: failureBlock:, относящегося к объекту «Библиотека ресурсов». Вот список значений, которые можно передать этому параметру для перечисления различных групп ресурсов:

• ALAssetsGroupAlbum — группы, содержащие альбомы, которые были сохранены на устройстве iOS из iTunes;

• ALAssetsGroupFaces — группы, содержащие альбомы, в которых представлены фотографии лиц, сохраненные на устройстве iOS из iTunes;

• ALAssetsGroupSavedPhotos — группы, содержащие снимки, которые сохранены в библиотеке фотографий. На устройстве iOS эти ресурсы доступны также через приложение Photos (Фотографии);

• ALAssetsGroupAll — все группы, доступные в библиотеке ресурсов.

Теперь напишем простое приложение, которое будет получать данные о первом изображении, найденном в библиотеке ресурсов, создавать UIImageView с этим изображением, а потом добавлять это изображение в вид того контроллера вида, который отображается в настоящий момент. На данном примере мы научимся считывать содержимое ресурса, используя его представление.

Когда контроллер вида отображает свой вид, мы инициализируем объект библиотеки ресурсов и начнем перечисление ресурсов в этой библиотеке, пока не найдем первую фотографию. На данном этапе будем использовать представление этого ресурса (фотографии), чтобы отобразить фотографию в виде с изображением:

— (void)viewDidAppear:(BOOL)animated{

[super viewDidAppear: animated];

static BOOL beenHereBefore = NO;

if (beenHereBefore){

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

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

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

return;

} else {

beenHereBefore = YES;

}

self.assetsLibrary = [[ALAssetsLibrary alloc] init];

dispatch_queue_t dispatchQueue =

dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

dispatch_async(dispatchQueue, ^(void) {

[self.assetsLibrary

enumerateGroupsWithTypes: ALAssetsGroupAll

usingBlock: ^(ALAssetsGroup *group, BOOL *stop) {

[group enumerateAssetsUsingBlock: ^(ALAsset *result,

NSUInteger index,

BOOL *stop) {

__block BOOL foundThePhoto = NO;

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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