Šta je matchedGeometryEffect i kako se koristi u SwiftUI?
sobes.tech АИ
Одговор од АИ
matchedGeometryEffect u SwiftUI se koristi za kreiranje glatke animacije prelaza između dva prikaza koja predstavljaju isti vizuelni element u različitim rasporedima. Povezuje geometriju prikaza u jednom stanju sa geometrijom drugog prikaza u drugom stanju, omogućavajući SwiftUI da automatski animira promene.
Koristi se primenom modifikatora .matchedGeometryEffect na oba prikaza koja treba da budu povezana. Modifikator prihvata tri parametra:
id: Jedinstveni identifikator za povezivanje prikaza.in: Prostor imena (Namespace) u kojem je registrovan identifikator. Obično se kreira pomoću@Namespace.properties: Skup geometrijskih svojstava koja treba da budu animirana (npr..position,.size,.frame).
Primer upotrebe:
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()
}
}
}
}
}
}
U ovom primeru, .matchedGeometryEffect povezuje dva Rectangle sa istim id ("myShape") i u istom prostoru imena (animation). Kada se isExpanded promeni, SwiftUI automatski animira prelaz između dva stanja, stvarajući glatki efekat promene veličine i položaja pravougaonika.