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

@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];

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

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

UICollisionBehavior *collision = [[UICollisionBehavior alloc]

initWithItems:@[topView, bottomView]];

collision.translatesReferenceBoundsIntoBoundary = YES;

[self.animator addBehavior: collision];

Наконец, очень важно добавить видам динамическое поведение, чтобы сделать верхний вид менее эластичным, чем нижний:

/* Теперь указываем эластичность элементов */

UIDynamicItemBehavior *moreElasticItem = [[UIDynamicItemBehavior alloc]

initWithItems:@[bottomView]];

moreElasticItem.elasticity = 1.0f;

UIDynamicItemBehavior *lessElasticItem = [[UIDynamicItemBehavior alloc]

initWithItems:@[topView]];

lessElasticItem.elasticity = 0.5f;

[self.animator addBehavior: moreElasticItem];

[self.animator addBehavior: lessElasticItem];

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

Рис. 2.4. Один вид эластичнее другого

См. также

Раздел 2.0.

Читать бесплатно другие книги:

Рассмотрены основы информатики и описаны современные аппаратные средства персонального компьютера. С...
Молодые парни из экстремистской организации «Русский трибунал» объявили партизанскую войну «предател...
Покончив с несчастливым браком, Грейс решила, что больше никогда не доверится мужчине и не поставит ...
Лиз Сазерленд только мечтала о том, чтобы черная полоса ее жизни когда-нибудь сменилась белой. Пробл...
В старину ставили храмы на полях сражений в память о героях и мучениках, отдавших за Родину жизнь. Н...
В учебном пособии представлены вариативные авторские методики воспитания и развития волевых качеств ...