TGViewer
YDC — Pizza Powered iOS YDC — Pizza Powered iOS @youngdacode · 242 subscribers
Post #89 181
😏 Что такое matchedGeometryEffect и зачем он нужен (по мотивам статьи)
matchedGeometryEffect — модификатор SwiftUI, который позволяет двум разным View анимироваться так, будто это один и тот же элемент, плавно переходящий из одного состояния в другое.
Это создаёт ощущение визуальной связности и помогает пользователю понимать, что он продолжает взаимодействовать с тем же объектом.

🔍 Где реально полезно использовать?

- уменьшенное изображение → полноэкранное отображение (изображение как бы «расправляется» в большой размер)

- список → экран деталей (карточка из списка переезжает в новую позицию, а не пропадает и появляется заново)

- cворачивание / разворачивание элементов (например, компактный блок превращается в полноценный контейнер)

(Примеры анимаций можно посмотреть в оригинальной статье)

🛠 Как это работает:

@Namespace private var namespace
@State private var expanded = false

var body: some View {
VStack {
if expanded {
itemExpanded
.matchedGeometryEffect(id: "card", in: namespace)
} else {
item
.matchedGeometryEffect(id: "card", in: namespace)
}
}
.onTapGesture {
withAnimation(.spring()) {
expanded.toggle()
}
}
}


Два разных View получают одинаковый id и одно пространство имён.
SwiftUI сам строит между ними плавный переход.

🍕 Что стоит учитывать в 2025:
Этот эффект не анимирует всё подряд. Цвет, прозрачность и скругления могут «перепрыгивать», если их не анимировать отдельно.

Если два состояния слишком разные по структуре, анимация может выглядеть странно.

В больших списках и сложных layout’ах matchedGeometryEffect иногда тяжелеет, так что лучше использовать точечно.

✔️ Когда использовать:
- нужно показать связь между двумя состояниями одного и того же элемента
- важна плавность и понятный переход

❌ Когда проще обойтись без него:
- если нужен обычный fade или scale
- если это два разных view без смысла связывать их визуально
- если layout очень сложный и тяжёлый

🔗 Оригинальная статья

👏

#R #SwiftUI #matchedGeometryEffect #модификаторы
Hacking with Swift How to synchronize animations from one view to another with matchedGeometryEffect() - a free SwiftUI by Example tutorial Learn Swift coding for iOS with these free tutorials
More from @youngdacode
  1. Mar 10, 2026😄 Статья CoordinatorKit 2.0: Production-Ready SwiftUI Navigation это пример честного разб…
  2. Mar 4, 2026☝️ 🚀 Как MCP-аналитика помогает AI-агентам кодирования принимать более «осознанные» решен…
  3. Feb 16, 2026☝️ В прошлом посте мы говорили про клиент-серверное взаимодействие: API, REST, запрос-отве…
  4. Feb 15, 2026☝️ 📦 Размер приложения — это не просто цифра в App Store Размер приложения напрямую влияе…
  5. Feb 13, 2026😏 Разберём разницу между some View и AnyView в SwiftUI. Тема не новая, но споры о правиль…
  6. Feb 9, 2026Вечернее-занимательное чтение. Пишет iOS разработчик с опытом, обзор на пост от iOS разраб…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →