Назовите основные аттрибуты constraint и что каждый из них означаетios-70

В AutoLayout constraints (ограничения) имеют несколько ключевых атрибутов, которые определяют их поведение. Рассмотрим каждый из них подробно.

1. First Attribute

Определяет, какой параметр первого элемента участвует в ограничении:

NSLayoutConstraint.Attribute:
.left       // Левый край (для RTL меняется на .right)
.right      // Правый край (для RTL меняется на .left)
.leading    // Начальный край (учитывает RTL)
.trailing   // Конечный край (учитывает RTL)
.top        // Верхний край
.bottom     // Нижний край
.width      // Ширина
.height     // Высота
.centerX    // Центр по горизонтали
.centerY    // Центр по вертикали
.firstBaseline // Базовая линия текста (первая строка)
.lastBaseline  // Базовая линия текста (последняя строка)

2. Second Attribute

Аналогичен первому, но относится ко второму элементу в ограничении. Может быть .notAnAttribute, если ограничение не связано с другим элементом.

3. Relation

Определяет математическое отношение между атрибутами:

NSLayoutConstraint.Relation:
.equal        // Равно (==)
.greaterThanOrEqual // Больше или равно (>=)
.lessThanOrEqual    // Меньше или равно (<=)

4. Constant

Числовое значение, добавляемое к атрибуту:

view1.leadingAnchor.constraint(equalTo: view2.trailingAnchor, constant: 20)
// Здесь 20 — это constant

5. Multiplier

Коэффициент, на который умножается значение атрибута:

view1.widthAnchor.constraint(equalTo: view2.widthAnchor, multiplier: 0.5)
// Здесь 0.5 — multiplier

6. Priority

Важность ограничения (от 1 до 1000):

let constraint = view.widthAnchor.constraint(equalToConstant: 200)
constraint.priority = .defaultHigh // 750
// Доступные стандартные приоритеты:
// .required (1000), .defaultHigh (750), .defaultLow (250)

7. isActive

Флаг, определяющий, активно ли ограничение:

constraint.isActive = true // Ограничение учитывается в layout
constraint.isActive = false // Ограничение игнорируется

Пример с использованием всех атрибутов

let constraint = NSLayoutConstraint(
    item: view1,
    attribute: .leading,
    relatedBy: .equal,
    toItem: view2,
    attribute: .trailing,
    multiplier: 1.0,
    constant: 20.0
)
constraint.priority = .defaultHigh
constraint.isActive = true

Особые атрибуты

  1. Safe Area Attributes (iOS 11+):

    • .safeAreaLayoutGuide (leading, trailing, top, bottom)
  2. Content Hugging Priority:

    • Сопротивление растяжению (contentHuggingVertical/Horizontal)
  3. Compression Resistance Priority:

    • Сопротивление сжатию (compressionResistanceVertical/Horizontal)

Резюмируем

Основные атрибуты Constraint включают:

  1. First/Second Attribute - какие параметры элементов связываем
  2. Relation - тип математического отношения
  3. Constant - фиксированное смещение
  4. Multiplier - коэффициент масштабирования
  5. Priority - важность ограничения (1000 - максимальная)
  6. isActive - включено ли ограничение

Понимание этих атрибутов критически важно для:

  • Создания точных и адаптивных макетов
  • Разрешения конфликтов constraints
  • Построения сложных динамических интерфейсов
  • Оптимизации производительности layout-системы