Если скопировать велью тайп его внутренние поля с ссылочными типами как будут вести ?
массив что внути как маштабируется (три вида массива) экзестентиал контейнер (rjynbyejc fhhft b ytn)
сatransaction cacommit
Excplisit animation
Pointers inout for struct Stone/Owner
Расчёт констрейнтов сразу синхронно в этом же потоке проиходит решение линейных уровнений
Вызов setNeedsLayout у Супервью (в следубщем апдейт цикле - нужно обновить фреймы всех сабВью)
Апдейт цикл - до 120 раз в секунду 1. Обновление констрейнтов
2. Обновление лайаута (Установка фрейма)
3. Отрисовка на экране
Можем поставить флаг setNeedUpdate - что бы в следующем цикле обновились фреймы.
Если хотим прямо сразу - updateConstraint и layoutIfNeeded (запустится сразу, если флаг в тру)
Если не вызовем layoutIfNeeded - данные будут не актуальны
Казуар - способ решения линейных уравнений
Создать систему ограничений
Преобразовать задачу в систему линейного программирования
Решить задачу SIMPLEX Method
Не менять констрейнты (лучше больше ячеек с identifier)
Когда мы добавляем, изменяем или удаляем constraint'ы, то они не обновляются сразу. Пересчет layout'a и обновление отрисовки при каждом изменении было бы неэффективным.
Вместо этого ваши изменения планируют, что механизм layout'a, принадлежащий window, запускает обновления layout'a при следующей возможности в runloop'e. Активация, изменение или деактивация constraints не обновляет напрямую фреймы вьюх. Вместо этого он обновляет модель the layout engine и планирует передачу макета, которая выполняется позже в цикле выполнения приложения.
- В иерархии представлений есть два прохода макета.Первый проход позволяет вам обновить constraints. Второй проход обновляет view layout, изменяя размер и положение представлений, чтобы они соответствовали значениям из модели the layout engine.
- Вызовите setNeedsLayout, чтобы вручную запланировать этап обновления layout'a. Вызов layoutIfNeeded для принудительного немедленного обновления view frames из модели.
В любой Момент времени Лайоут посчитан
На самом деле существует три этапа, связанные с компоновкой и рисованием видов.
Первый - это обновление ограничений (constraint pass), которое происходит снизу вверх.
Второй - это компоновка представлений и подвидов (layout pass), которая происходит сверху вниз и зависит от настроек ограничений.
Третий этап - это проход отображения, где виды перерисовываются на основе прохода макета.