• views — это словарь видов, для которых вы написали ограничение в первом параметре данного метода. Чтобы создать такой словарь, просто воспользуйтесь функцией NSDictionaryOfVariableBindings из языка C и передайте этому методу ваши новые объекты. Ключи в этом словаре — это названия видов, которые вы должны использовать в первом параметре метода. Не переживайте, если пока все это кажется странным и даже бессмысленным. Вскоре все будет понятно! Как только вы изучите несколько примеров, сразу получится стройная картина.

Вооружившись базовой информацией, не забивая голову ничем лишним, перейдем к практическим разделам. В качестве зарядки поупражняемся немного с ограничениями. Готовы? Поехали!

<p>3.1. Размещение компонентов пользовательского интерфейса в центре экрана</p><p>Постановка задачи</p>

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

<p>Решение</p>

Создайте два ограничения: одно для выравнивания позиции center.x целевого вида по позиции center.x вышестоящего вида, другое — для выравнивания позиции center.y целевого вида по позиции center.y вышестоящего вида.

<p>Обсуждение</p>

Начнем с создания простой кнопки, которую выровняем по центру экрана. Как было указано в подразделе «Решение» текущего раздела, для этого всего лишь требуется гарантировать, что координаты x и y центра нашей кнопки будут соответствовать координатам x и y центра того вида, в котором находится кнопка. Для этого мы напишем два ограничения и добавим их к виду, включающему нашу кнопку (вышестоящему виду этой кнопки). Вот простой код, позволяющий добиться такого эффекта:

#import «ViewController.h»

@interface ViewController 

@property (nonatomic, strong) UIButton *button;

@end

@implementation ViewController

— (void)viewDidLoad{

[super viewDidLoad];

/* 1) Создаем кнопку */

self.button = [UIButton buttonWithType: UIButtonTypeSystem];

self.button.translatesAutoresizingMaskIntoConstraints = NO;

[self.button setTitle:@"Button" forState: UIControlStateNormal];

[self.view addSubview: self.button];

UIView *superview = self.button.superview;

/* 2) Создаем ограничение для центрирования кнопки по горизонтали */

NSLayoutConstraint *centerXConstraint =

[NSLayoutConstraint constraintWithItem: self.button

attribute: NSLayoutAttributeCenterX

relatedBy: NSLayoutRelationEqual

toItem: superview

attribute: NSLayoutAttributeCenterX

multiplier:1.0f

constant:0.0f];

/* 3) Создаем ограничение для центрирования кнопки по вертикали */

NSLayoutConstraint *centerYConstraint =

[NSLayoutConstraint constraintWithItem: self.button

attribute: NSLayoutAttributeCenterY

relatedBy: NSLayoutRelationEqual

toItem: superview

attribute: NSLayoutAttributeCenterY

multiplier:1.0f

constant:0.0f];

/* Добавляем ограничения к вышестоящему виду кнопки */

[superview addConstraints:@[centerXConstraint, centerYConstraint]];

}

@end

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже