Термины
- final class - предотвращение переопределения метода.
- final class - сообщаем компилятору Swift, что метод следует вызывать напрямую (статическая отправка), а не искать функцию из таблицы методов (динамическая отправка).
intrinsicContentSize - это свойство UIView, которое представляет минимальный требуемый размер представления для отображения всего его содержимого.
invalidateIntrinsicContentSize - делает недействительным его текущий внутренний размер содержимого. Это позволяет системе компоновки на основе ограничений учитывать новый внутренний размер содержимого на следующем проходе компоновки.
Content Hugging Priority - Возвращает приоритет, с которым представление сопротивляется увеличению, превышающему его внутренний размер.
Content Compression Resistance Priority - Возвращает приоритет, с которым представление сопротивляется уменьшению его внутреннего размера.
override init(frame: CGRect) - назначенный инициализатор полностью инициализирует все свойства, введенные этим классом, и вызывает соответствующий инициализатор суперкласса, чтобы продолжить процесс инициализации вверх по цепочке суперкласса.
required init?(coder aDecoder: NSCoder) - требуемый инициализатор декодер NSCoder связан с построителем интерфейса.
Сериализация - сохранение состояния представления.
Десериализация - восстановление состояния объекта
Практика
Создадим View синего цвета с изменяемым текстом.
Шаг 1
Создаем testView.swift (это наше View) и помечаем final.
Шаг 2
Добавляем назначенный и требуемый инициализатор.
Шаг 3
Объявляем элементы в нашей View - это Label. Свойства делаем приватными.
Шаг 4
Настраиваем ограничения для Label в отдельном методе и вызываем в наших инициализаторах.
Шаг 5
Делаем первичную настройку нашего View в отдельном методе и вызываем в наших инициализаторах
Шаг 6
Делаем возможность изменять текст в textLabel
Шаг 7
Теперь используем нашу View во ViewController и меняем текст на любой другой.