Sobes.tech
Middle

Kas yra matchedGeometryEffect SwiftUI?

sobes.tech AI

Atsakymas iš AI

matchedGeometryEffect SwiftUI — tai modifikatorius, leidžiantis sklandžiai animuoti vaizdų dydžio ir padėties pokyčius jų perkėlimu tarp skirtingų hierarchijų ar konteinerių.

Pagrindiniai principai:

  • Identifikatorių suderinimas: Nurodote tą patį identifikatorių (id) vaizdams, kuriuos norite animuoti pereinant.
  • Šaltinis ir tikslas: Nurodote vardų erdvę (namespace), kuri sujungia šiuos vaizdus.
  • Automatinė animacija: SwiftUI automatiškai apskaičiuoja tarpinę būseną ir animuoja perėjimą iš vienos būsenos į kitą.

Naudojimas:

import SwiftUI

struktūra ContentView: View {
    @Namespace private var namespace
    @State private var isExpanded = false

    var body: some View {
        VStack {
            jei isExpanded {
                RoundedRectangle(cornerRadius: 10)
                    .fill(Color.blue)
                    .matchedGeometryEffect(id: "box", in: namespace)
                    .frame(width: 200, height: 200)
                    .onTapGesture {
                        suAnimation {
                            isExpanded.toggle()
                        }
                    }
            } kitaip {
                RoundedRectangle(cornerRadius: 5)
                    .fill(Color.red)
                    .matchedGeometryEffect(id: "box", in: namespace)
                    .frame(width: 50, height: 50)
                    .onTapGesture {
                        suAnimation {
                            isExpanded.toggle()
                        }
                    }
            }
        }
    }
}

Šiame pavyzdyje RoundedRectangle keičia dydį ir spalvą, kai keičiasi isExpanded būsena, naudojant matchedGeometryEffect su identifikatoriumi "box" ir vardų erdve namespace. SwiftUI automatiškai animuoja šiuos pokyčius.