Вандад Нахавандипур

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


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

из них будет плотность 1, а у другого – 0,5, то при одинаковых высоте и ширине обоих элементов масса первого элемента будет больше, чем масса второго. Аниматор вычисляет массу элементов, исходя из их плотности и размеров экрана. Поэтому если вы столкнете маленький вид с высокой плотностью с большим видом с очень низкой плотностью, то маленький вид, в зависимости от конкретного размера и плотности этого элемента, может быть воспринят аниматором как более массивный объект, нежели крупный вид. В таком случае, аниматор может сильнее оттолкнуть тот элемент, который на экране кажется более крупным, тогда как толчок, сообщаемый крупным элементом мелкому, получится не столь значительным.

      Перейдем к примеру. Он отчасти основан на примере, рассмотренном в разделе 2.2. В примере из этого раздела мы собираемся расположить один вид на другом, но тот вид, который находится снизу, будет очень эластичным, а эластичность вида, расположенного сверху, будет сравнительно невысока. Таким образом, когда оба вида упадут на дно экрана, где столкнутся с нижней границей, нижний вид отскочит от нее значительно сильнее, чем верхний. Итак, начнем с определения аниматора и других свойств контроллера вида:

      #import "ViewController.h"

      @interface ViewController ()

      @property (nonatomic, strong) UIDynamicAnimator *animator;

      @end

      @implementation ViewController

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

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

      – (UIView *) newViewWithCenter:(CGPoint)paramCenter

      backgroundColor:(UIColor *)paramBackgroundColor{

      UIView *newView =

      [[UIView alloc] initWithFrame:

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

      newView.backgroundColor = paramBackgroundColor;

      newView.center = paramCenter;

      return newView;

      }

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

      UIView *topView = [self newViewWithCenter: CGPointMake(100.0f, 0.0f)

      backgroundColor: [UIColor greenColor]];

      UIView *bottomView = [self newViewWithCenter: CGPointMake(100.0f, 50.0f)

      backgroundColor: [UIColor redColor]];

      [self.view addSubview: topView];

      [self.view addSubview: bottomView];

      Далее добавим к видам поведение тяготения – этому мы научились в разделе 2.1:

      self.animator = [[UIDynamicAnimator alloc]

      initWithReferenceView: self.view];

      /* Создаем тяготение */

      UIGravityBehavior *gravity = [[UIGravityBehavior alloc]

      initWithItems:@[topView, bottomView]];

      [self.animator addBehavior: gravity];

      Конец ознакомительного фрагмента.

      Текст предоставлен ООО «ЛитРес».

      Прочитайте эту книгу целиком, купив полную легальную версию на ЛитРес.

      Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным