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

Чтение книги онлайн.

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

iOS. Приемы программирования - Вандад Нахавандипур Бестселлеры O’Reilly (Питер)

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

создать и в iOS, воспользовавшись поведением прикрепления из UIKit.

      В этом примере мы собираемся создать такой эффект, который продемонстрирован на рис. 2.3.

      Рис. 2.3. Именно такого эффекта мы хотим добиться в данном разделе с помощью поведения прикрепления

      Как видите, на экране находятся три вида. Основной вид расположен в центре, в правом верхнем углу этого вида есть еще один вид, более мелкий. Маленький вид – это и есть тот элемент, который будет следовать за точкой привязки, по принципу, который я описал в примере с фотографией. Наконец, необходимо отметить, что точка привязки в данном примере будет перемещаться по экрану под действием жеста панорамирования и регистратора соответствующих жестов (см. раздел 10.3). Затем в результате таких движений станет двигаться большой вид, расположенный в центре экрана. Итак, начнем с определения необходимых свойств контроллера вида:

      #import "ViewController.h"

      @interface ViewController ()

      @property (nonatomic, strong) UIView *squareView;

      @property (nonatomic, strong) UIView *squareViewAnchorView;

      @property (nonatomic, strong) UIView *anchorView;

      @property (nonatomic, strong) UIDynamicAnimator *animator;

      @property (nonatomic, strong) UIAttachmentBehavior *attachmentBehavior;

      @end

      @implementation ViewController

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

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

      – (void) createSmallSquareView{

      self.squareView =

      [[UIView alloc] initWithFrame:

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

      self.squareView.backgroundColor = [UIColor greenColor];

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

      self.squareViewAnchorView = [[UIView alloc] initWithFrame:

      CGRectMake(60.0f, 0.0f, 20.0f, 20.0f)];

      self.squareViewAnchorView.backgroundColor = [UIColor brownColor];

      [self.squareView addSubview: self.squareViewAnchorView];

      [self.view addSubview: self.squareView];

      }

      Далее создадим вид с точкой привязки:

      – (void) createAnchorView{

      self.anchorView = [[UIView alloc] initWithFrame:

      CGRectMake(120.0f, 120.0f, 20.0f, 20.0f)];

      self.anchorView.backgroundColor = [UIColor redColor];

      [self.view addSubview: self.anchorView];

      }

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

      – (void) createGestureRecognizer{

      UIPanGestureRecognizer *panGestureRecognizer =

      [[UIPanGestureRecognizer alloc] initWithTarget: self

      action:@selector(handlePan:)];

      [self.view addGestureRecognizer: panGestureRecognizer];

      }

      – (void) createAnimatorAndBehaviors{

      self.animator = [[UIDynamicAnimator alloc]

      initWithReferenceView: self.view];

      /* Создаем распознавание столкновений */

      UICollisionBehavior *collision = [[UICollisionBehavior alloc]

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