Найти тему
 Just IOS 

Создаем View в коде

Термины

  1. final class - предотвращение переопределения метода.
  2. final class - сообщаем компилятору Swift, что метод следует вызывать напрямую (статическая отправка), а не искать функцию из таблицы методов (динамическая отправка).

intrinsicContentSize - это свойство UIView, которое представляет минимальный требуемый размер представления для отображения всего его содержимого.

invalidateIntrinsicContentSize - делает недействительным его текущий внутренний размер содержимого. Это позволяет системе компоновки на основе ограничений учитывать новый внутренний размер содержимого на следующем проходе компоновки.

intrinsicContentSize
intrinsicContentSize

Content Hugging Priority - Возвращает приоритет, с которым представление сопротивляется увеличению, превышающему его внутренний размер.

Content Compression Resistance Priority - Возвращает приоритет, с которым представление сопротивляется уменьшению его внутреннего размера.

Content Hugging и Content Compression
Content Hugging и Content Compression

override init(frame: CGRect) - назначенный инициализатор полностью инициализирует все свойства, введенные этим классом, и вызывает соответствующий инициализатор суперкласса, чтобы продолжить процесс инициализации вверх по цепочке суперкласса.

Назначенный инициализатор
Назначенный инициализатор

required init?(coder aDecoder: NSCoder) - требуемый инициализатор декодер NSCoder связан с построителем интерфейса.

Сериализация - сохранение состояния представления.

Десериализация - восстановление состояния объекта

NSCoder
NSCoder

Практика

Создадим View синего цвета с изменяемым текстом.

View не имеет intrinsicContentSize, поэтому ширину и высоту надо указывать явно.
View не имеет intrinsicContentSize, поэтому ширину и высоту надо указывать явно.

Шаг 1

Создаем testView.swift (это наше View) и помечаем final.

TestView.swift
TestView.swift

Шаг 2

Добавляем назначенный и требуемый инициализатор.

Назначенный и требуемый инициализатор
Назначенный и требуемый инициализатор

Шаг 3

Объявляем элементы в нашей View - это Label. Свойства делаем приватными.

Создали textLabel
Создали textLabel

Шаг 4

Настраиваем ограничения для Label в отдельном методе и вызываем в наших инициализаторах.

Ограничения для Label
Ограничения для Label

Шаг 5

Делаем первичную настройку нашего View в отдельном методе и вызываем в наших инициализаторах

Первичная настройка
Первичная настройка

Шаг 6

Делаем возможность изменять текст в textLabel

Наша View готова
Наша View готова

Шаг 7

Теперь используем нашу View во ViewController и меняем текст на любой другой.

Используем нашу View во ViewController
Используем нашу View во ViewController