matchedGeometryEffect в SwiftUI используется для создания плавной анимации перехода между двумя представлениями, которые представляют один и тот же визуальный элемент в разных макетах. Он связывает геометрию представления в одном состоянии с геометрией другого представления в другом состоянии, позволяя SwiftUI автоматически анимировать изменения.
Используется путем применения модификатора .matchedGeometryEffect к обоим представлениям, которые должны быть связаны. Модификатор принимает три параметра:
id: Уникальный идентификатор для связи представлений.in: Пространство имен (Namespace), в котором зарегистрирован идентификатор. Обычно создается с помощью @Namespace.properties: Набор свойств геометрии, которые должны быть анимированы (например, .position, .size, .frame).Пример использования:
swift
В этом примере .matchedGeometryEffect связывает два Rectangle с одним и тем же id ("myShape") и в одном и том же пространстве имен (animation). Когда isExpanded переключается, SwiftUI анимирует переход между двумя состояниями представлений, создавая эффект плавного изменения размера и положения прямоугольника.