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

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

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

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

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

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

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

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

@end


@implementation ViewController


— (void)viewDidLoad {

[super viewDidLoad];


/* Инстанцируем объект. */

self.swipeGestureRecognizer = [[UISwipeGestureRecognizer alloc]

initWithTarget: self

action:@selector(handleSwipes:)];


/* Необходимо обнаруживать жесты смахивания,

направленные справа налево. */

self.swipeGestureRecognizer.direction =

UISwipeGestureRecognizerDirectionLeft;


/* Нужен только один палец. */

self.swipeGestureRecognizer.numberOfTouchesRequired = 1;


/* Добавляем к виду. */

[self.view addGestureRecognizer: self.swipeGestureRecognizer];


}


Распознаватель жестов может быть создан как автономный объект, но в данном случае, поскольку мы используем распознаватель только с одним видом, мы запрограммировали его как свойство контроллера вида, который будет принимать жест (self.swipeGestureRecognizer). В подразделе «Обсуждение» данного раздела показано применение в этом коде метода handleSwipes:, выступающего в качестве цели для распознавателя жестов смахивания.

Обсуждение

Жест смахивания (скольжения) — одно из наиболее простых движений, регистрируемых встроенными распознавателями жестов, входящими в состав iOS SDK. Это простое движение одного или нескольких пальцев по экрану в том или ином направлении. Класс UISwipeGestureRecognizer, как и любые другие распознаватели жестов, наследует от класса UIGestureRecognizer и добавляет к нему различные функции. В частности, это свойства, позволяющие указывать направление, в котором должны выполняться жесты смахивания, чтобы система их обнаружила, а также определять, сколько пальцев пользователь должен держать на экране, чтобы можно было совершить жест смахивания. Не забывайте, что жесты смахивания являются дискретными.

Метод handleSwipes:, которым мы воспользовались при написании распознавателя жестов, можно реализовать следующим образом:


— (void) handleSwipes:(UISwipeGestureRecognizer *)paramSender{


if (paramSender.direction & UISwipeGestureRecognizerDirectionDown){

NSLog(@"Swiped Down.");

}

if (paramSender.direction & UISwipeGestureRecognizerDirectionLeft){

NSLog(@"Swiped Left.");

}

if (paramSender.direction & UISwipeGestureRecognizerDirectionRight){

NSLog(@"Swiped Right.");

}

if (paramSender.direction & UISwipeGestureRecognizerDirectionUp){

NSLog(@"Swiped Up.");

}


}

В свойстве direction экземпляра класса UISwipeGestureRecognizer можно скомбинировать несколько направлений, пользуясь поразрядным операндом OR (ИЛИ). В языке Objective-C он обозначается вертикальной чертой (|). Например, чтобы получить прямое диагональное смахивание по направлению к нижнему левому углу экрана, можно скомбинировать значения UISwipeGestureRecognizerDirectionLeft и UISwipeGestureRecognizerDirectionDown, применяя при создании распознавателя жестов знаки вертикальной черты. В данном примере мы пытаемся обнаружить только жесты смахивания, идущие справа налево.

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

10.2. Обнаружение жестов вращения

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

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

Решение

Создайте экземпляр класса UIRotationGestureRecognizer и присоедините его к целевому виду:


— (void)viewDidLoad {

[super viewDidLoad];


self.helloWorldLabel = [[UILabel alloc] initWithFrame: CGRectZero];

self.helloWorldLabel.text = @"Hello, World!";

self.helloWorldLabel.font = [UIFont systemFontOfSize:16.0f];

[self.helloWorldLabel sizeToFit];

self.helloWorldLabel.center = self.view.center;

[self.view addSubview: self.helloWorldLabel];


self.rotationGestureRecognizer = [[UIRotationGestureRecognizer alloc]

initWithTarget: self

action:@selector(handleRotations:)];


[self.view addGestureRecognizer: self.rotationGestureRecognizer];


}

Обсуждение

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

Класс UIRotationGestureRecognizer реализует свойство rotation, указывающее степень и направление вращения, заданного жестом пользователя. Эти показатели выражаются в радианах. Вращение определяется в зависимости от исходного положения пальцев (UIGestureRecognizerStateBegan) и их конечного положения (UIGestureRecognizerStateEnded).

Чтобы вращать элементы пользовательского интерфейса, наследующие от класса UIView, можно передать свойство rotation распознавателя жестов вращения функции CGAffineTransformMakeRotation, чтобы она выполнила аффинное преобразование, как показано в следующем примере.

Код, приведенный в подразделе «Решение» данного раздела, передает актуальный объект (в данном случае контроллер вида) к цели распознавателя жестов вращения. Целевой селектор задается как handleRotations: — метод, который мы хотим реализовать. Но прежде, чем приступить к этому, изучим заголовочный файл контроллера вида:


#import «ViewController.h»

@interface ViewController ()


@property (nonatomic, strong)

UIRotationGestureRecognizer *rotationGestureRecognizer;


@property (nonatomic, strong)

UILabel *helloWorldLabel;

/* Из этого объявления свойства можно удалить метки nonatomic

и unsafe_unretained. Имея значение с плавающей точкой, компилятор

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

@property (nonatomic, unsafe_unretained)

CGFloat rotationAngleInRadians;


@end

@implementation ViewController


Прежде чем продолжать, рассмотрим, за что отвечает каждое из этих свойств и почему они объявляются:

• helloWorldLabel — это метка, которую мы должны поставить на виде в контроллере вида. Потом напишем код для вращения этой метки. Вращение будет начинаться всякий раз, когда пользователь станет совершать вращательные жесты на виде, обладающем этой меткой (в данном случае речь идет о виде нашего контроллера вида);

• rotationGestureRecognizer — это экземпляр распознавателя жестов вращения, который мы позже выделим и инициализируем;

• rotationAngleInRadians — это значение, которое будет запрашиваться как точный угол поворота метки. Изначально это свойство устанавливается в нуль. Поскольку углы вращения, сообщаемые распознавателем, сбрасываются перед каждым новым пуском распознавателя, можно всякий раз сохранять значение распознавателя жестов вращения, когда он переходит в состояние UIGestureRecognizerStateEnded. В следующий раз при запуске жеста мы суммируем предыдущее значение вращения и новое значение вращения, получив в результате общий угол вращения.


Размер метки и ее центральная точка могут выбираться произвольно. Аналогично непринципиально и положение самой метки, так как мы просто пытаемся вращать метку вокруг ее центра независимо от того, в какой части вида она расположена. Единственный важный аспект здесь заключается в том, что в универсальных приложениях положение метки в контроллере вида следует рассчитывать динамически при работе с разными целями (то есть устройствами), основываясь на размерах ее родительского вида. Если приложение запускается на иных устройствах, кроме iPhone и iPad, метка может оказываться в различных точках экрана.

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

Как показано в подразделе «Решение» данного раздела, созданный нами распознаватель жестов вращения будет отправлять свои события методу handleRotations:. Вот реализация этого метода:


— (void) handleRotations:(UIRotationGestureRecognizer *)paramSender{


if (self.helloWorldLabel == nil){

return;

}


/* Берем предыдущее значение вращения и суммируем его с актуальным


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

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


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

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

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