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

Читать онлайн.
Название iOS. Приемы программирования
Автор произведения Вандад Нахавандипур
Жанр Программирование
Серия Бестселлеры O’Reilly (Питер)
Издательство Программирование
Год выпуска 2014
isbn 978-5-496-01016-0



Скачать книгу

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

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

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

      2.1. Добавление тяготения к компонентам пользовательского интерфейса

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

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

      Решение

      Инициализируйте объект типа UIGravityBehavior и добавьте к нему те компоненты пользовательского интерфейса, которые должны испытывать тяготение к этому объекту. Сделав это, создайте экземпляр UIDynamicAnimator, добавьте к аниматору поведение тяготения, а всю остальную работу аниматор сделает за вас.

      Обсуждение

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

      Итак, определим аниматор и вид:

      #import "ViewController.h"

      @interface ViewController ()

      @property (nonatomic, strong) UIView *squareView;

      @property (nonatomic, strong) UIDynamicAnimator *animator;

      @end

      @implementation ViewController

      <# Оставшаяся часть кода вашего контроллера вида находится здесь #>

      Далее создадим небольшой вид, присвоим ему цвет и поместим в центре вида нашего контроллера. Так мы получим экземпляр класса UIGravityBehavior, воспользовавшись методом-инициализатором initWithItems:. Этот инициализатор принимает массив объектов, соответствующих протоколу UIDynamicItem. По умолчанию этому протоколу соответствуют все экземпляры UIView, поэтому, как только вид готов, можно идти дальше:

      – (void)viewDidAppear:(BOOL)animated{

      [super viewDidAppear: animated];

      /* Создаем маленький квадратный вид и добавляем его к self.view */

      self.squareView = [[UIView alloc] initWithFrame:

      CGRectMake(0.0f, 0.0f, 100.0f, 100.0f)];

      self.squareView.backgroundColor = [UIColor greenColor];

      self.squareView.center = self.view.center;

      [self.view addSubview: