My-library.info
Все категории

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

На электронном книжном портале my-library.info можно читать бесплатно книги онлайн без регистрации, в том числе Вандад Нахавандипур - iOS. Приемы программирования. Жанр: Программирование издательство -, год 2004. В онлайн доступе вы получите полную версию книги с кратким содержанием для ознакомления, сможете читать аннотацию к книге (предисловие), увидеть рецензии тех, кто произведение уже прочитал и их экспертное мнение о прочитанном.
Кроме того, в библиотеке онлайн my-library.info вы найдете много новинок, которые заслуживают вашего внимания.

Название:
iOS. Приемы программирования
Издательство:
-
ISBN:
-
Год:
-
Дата добавления:
17 сентябрь 2019
Количество просмотров:
192
Читать онлайн
Вандад Нахавандипур - iOS. Приемы программирования

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

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

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

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

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

Гироскоп, имеющийся в некоторых устройствах с iOS, может регистрировать такие движения. И мы можем писать более гладкие и безошибочные программы обнаружения движения. Обычно такие возможности полезны в играх, так как при их программировании разработчику зачастую требуется узнать не только о том, как устройство движется по осям X, Y и Z — эти данные можно получить от акселерометра, — но и о том, движется ли устройство по этим осям относительно Земли. А вот для этого уже нужен гироскоп.

Программист может пользоваться фреймворком Core Motion для доступа к информации, поступающей как от акселерометра, так и от гироскопа (при их наличии). Фреймворк Core Motion применяется во всех разделах этой главы. При работе с новым компилятором LLVM, чтобы связать новое приложение с системным фреймворком, вам всего лишь потребуется импортировать этот фреймворк в верхней части заголовочных файлов и файлов реализации, а компилятор сам выполнит все необходимые операции для импорта фреймворка в приложение.

Эмулятор iOS не может имитировать работу акселерометра и гироскопа. Правда, в эмуляторе iOS можно имитировать встряхивание, выбрав команду Hardware — Shake Gesture (Оборудование — Жест встряхивания) (рис. 18.1).


Рис. 18.1. Параметр Shake Gesture (Жест встряхивания) в эмуляторе iOS

18.1. Обнаружение доступности акселерометра

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

В вашей программе требуется определить, имеется ли в устройстве акселерометр.

Решение

Для обнаружения акселерометра пользуйтесь методом isAccelerometerAvailable класса CMMotionManager. Метод isAccelerometerActive также позволяет узнать, посылает ли акселерометр в данный момент уведомления вашей программе.

Сначала убедимся, что импортировали необходимые заголовочные файлы:


#import «AppDelegate.h»

#import <CoreMotion/CoreMotion.h>


@implementation AppDelegate


Далее проверим, что присутствие акселерометра указано в файле реализации делегата нашего приложения:


— (BOOL) application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{


CMMotionManager *motionManager = [[CMMotionManager alloc] init];


if ([motionManager isAccelerometerAvailable]){

NSLog(@"Accelerometer is available.");

} else{

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

}


if ([motionManager isAccelerometerActive]){

NSLog(@"Accelerometer is active.");

} else {

NSLog(@"Accelerometer is not active.");

}


self.window = [[UIWindow alloc] initWithFrame:

[[UIScreen mainScreen] bounds]];


self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];

return YES;

}


Итак, в устройстве с iOS, где работает ваша программа, может присутствовать акселерометр. Но это еще не означает, что акселерометр посылает уведомления вашему приложению. Если акселерометр или гироскоп посылает такие уведомления, мы говорим, что он активен (а в таком случае нам потребуется определить объект делегата, о чем поговорим чуть позже).

Если запустить этот код в эмуляторе iOS, то в окне консоли появятся примерно такие сообщения:


Accelerometer is not available. // акселерометр недоступен

Accelerometer is not active. // акселерометр неактивен

При запуске такого же кода на новом iPhone получим такие значения:

Accelerometer is available. // акселерометр доступен

Accelerometer is not active. // акселерометр неактивен

Обсуждение

В устройстве с операционной системой iOS может быть встроенный акселерометр. Поскольку мы не можем с уверенностью сказать, в каких устройствах с iOS имеется такое оборудование, а в каких — нет, перед использованием акселерометра целесообразно проверить, доступен ли он.

Чтобы проверить наличие этого оборудования, нужно инстанцировать объект типа CMMotionManager и получить доступ к его методу isAccelerometerAvailable. Это метод логического типа, он возвращает значение YES, если акселерометр доступен, и NO, если он отсутствует.

Кроме того, можно узнать о том, посылает ли акселерометр обновления вашей программе в настоящий момент (соответственно, активен ли он), воспользовавшись методом isAccelerometerActive класса CMMotionManager. О том, как получать данные от акселерометра, мы поговорим в разделе 18.3.

См. также

Раздел 18.3.

18.2. Обнаружение доступности гироскопа

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

В вашей программе требуется определить, имеется ли в устройстве гироскоп.

Решение

Пользуйтесь методом isGyroAvailable, относящимся к классу CMMotionManager, чтобы проверить наличие гироскопа. Кроме того, метод isGyroActive позволяет узнать, посылает ли в данный момент гироскоп обновления вашему приложению, то есть активен ли он:


#import «AppDelegate.h»

#import <CoreMotion/CoreMotion.h>


@implementation AppDelegate


— (BOOL) application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{


CMMotionManager *motionManager = [[CMMotionManager alloc] init];


if ([motionManager isGyroAvailable]){

NSLog(@"Gryro is available.");

} else {

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

}


if ([motionManager isGyroActive]){

NSLog(@"Gryo is active.");

} else {

NSLog(@"Gryo is not active.");

}


self.window = [[UIWindow alloc] initWithFrame:

[[UIScreen mainScreen] bounds]];


self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];

return YES;

}


Эмулятор iOS не позволяет имитировать работу гироскопа. Запустив этот код в эмуляторе, вы увидите в окне консоли примерно такой текст:


Gyro is not available. // гироскоп недоступен

Gyro is not active. // гироскоп неактивен

Если запустить этот код на устройстве с iOS, оборудованном гироскопом, например на новом iPhone, то результаты будут иными:

Gyro is available. // гироскоп доступен

Gyro is not active. // гироскоп неактивен

Обсуждение

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

Чтобы решить эту задачу, потребуется инстанцировать объект типа CMMotionManager. После этого мы должны будем получить доступ к логическому методу isGyroAvailable и посмотреть, доступен ли гироскоп на том устройстве, где выполняется ваш код. Кроме того, можно воспользоваться методом isGyroActive экземпляра CMMotionManager, чтобы узнать, посылает ли гироскоп в настоящее время обновления вашему приложению. Подробнее об этом поговорим в разделе 18.5.

См. также

Раздел 18.5.

18.3. Получение данных акселерометра

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

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

Решение

Пользуйтесь методом экземпляра startAccelerometerUpdatesToQueue: withHandler:, относящимся к классу CMMotionManager. Вот заголовочный файл контроллера вида, в котором класс CMMotionManager применяется для получения обновлений от акселерометра:


#import «ViewController.h»

#import <CoreMotion/CoreMotion.h>


@interface ViewController ()

@property (nonatomic, strong) CMMotionManager *motionManager;

@end


@implementation ViewController


Мы реализуем контроллер вида и воспользуемся методом startAccelerometerUpdatesToQueue: withHandler: класса CMMotionManager:


— (void)viewDidLoad{

[super viewDidLoad];


self.motionManager = [[CMMotionManager alloc] init];


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

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


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

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

Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*
Все материалы на сайте размещаются его пользователями.
Администратор сайта не несёт ответственности за действия пользователей сайта..
Вы можете направить вашу жалобу на почту librarybook.ru@gmail.com или заполнить форму обратной связи.