Middle+
Kas yra matchedGeometryEffect ir kaip jis naudojamas SwiftUI?
sobes.tech AI
Atsakymas iš AI
matchedGeometryEffect SwiftUI naudojamas kuriant sklandų perėjimą tarp dviejų vaizdų, kurie atstovauja tą patį vizualinį elementą skirtinguose maketuose. Jis sujungia vienos būsenos vaizdo geometriją su kitos būsenos vaizdo geometrija, leidžiant SwiftUI automatiškai animuoti pokyčius.
Naudojama pritaikant .matchedGeometryEffect modifikatorių abiem vaizdams, kurie turi būti susieti. Modifikatorius priima tris parametrus:
id: Unikalus identifikatorius vaizdų susiejimui.in: Vardų erdvė (Namespace), kurioje registruotas identifikatorius. Paprastai sukuriama naudojant@Namespace.properties: Geometrinės savybės, kurios turi būti animuotos (pavyzdžiui,.position,.size,.frame).
Naudojimo pavyzdys:
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()
}
}
}
}
}
}
Šiame pavyzdyje .matchedGeometryEffect sujungia du Rectangle su tuo pačiu id ("myShape") ir tame pačiame vardų erdvėje (animation). Kai isExpanded keičiasi, SwiftUI automatiškai animuoja perėjimą tarp dviejų būsenų, sukurdama sklandų dydžio ir padėties keitimo efektą.