Sobes.tech
Middle+

Ce este matchedGeometryEffect și cum se folosește în SwiftUI?

sobes.tech AI

Răspuns de la AI

matchedGeometryEffect în SwiftUI este utilizat pentru a crea o animație de tranziție lină între două vizualizări care reprezintă același element vizual în diferite aspecte. Leagă geometria vizualizării într-o stare cu geometria unei alte vizualizări într-o altă stare, permițând SwiftUI să animeze automat modificările.

Se folosește aplicând modificatorul .matchedGeometryEffect pe ambele vizualizări care trebuie legate. Modificatorul acceptă trei parametri:

  1. id: Identificator unic pentru a lega vizualizările.
  2. in: Spațiu de nume (Namespace) în care este înregistrat identificatorul. De obicei, creat cu @Namespace.
  3. properties: Set de proprietăți geometrice care trebuie animate (de exemplu, .position, .size, .frame).

Exemplu de utilizare:

struct ContentView: View {
    @Namespace private var animation
    @State private var isExpanded = false

    var body: some View {
        VStack {
            if isExpanded {
                Rectangle()
                    .fill(Color.blue)
                    .matchedGeometryEffect(id: "myShape", in: animation)
                    .frame(width: 200, height: 200)
                    .onTapGesture {
                        withAnimation {
                            isExpanded.toggle()
                        }
                    }
            } else {
                Rectangle()
                    .fill(Color.red)
                    .matchedGeometryEffect(id: "myShape", in: animation)
                    .frame(width: 50, height: 50)
                    .onTapGesture {
                        withAnimation {
                            isExpanded.toggle()
                        }
                    }
            }
        }
    }
}

În acest exemplu, .matchedGeometryEffect leagă două Rectangle cu același id ("myShape") și în același spațiu de nume (animation). Când isExpanded se schimbă, SwiftUI animează tranziția între cele două stări, creând un efect lin de schimbare a dimensiunii și poziției dreptunghiului.