Middle+
Co je to matchedGeometryEffect a jak se používá ve SwiftUI?
sobes.tech AI
Odpověď od AI
matchedGeometryEffect ve SwiftUI se používá k vytvoření plynulé přechodové animace mezi dvěma pohledy, které představují stejný vizuální prvek v různých rozvrženích. Spojuje geometrii pohledu v jednom stavu s geometrií jiného pohledu v jiném stavu, což umožňuje SwiftUI automaticky animovat změny.
Používá se aplikací modifikátoru .matchedGeometryEffect na oba pohledy, které mají být spojeny. Modifikátor přijímá tři parametry:
id: Unikátní identifikátor pro spojení pohledů.in: Prostor jmen (Namespace), ve kterém je identifikátor zaregistrován. Obvykle se vytváří pomocí@Namespace.properties: Sada geometrických vlastností, které mají být animovány (například.position,.size,.frame).
Příklad použití:
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()
}
}
}
}
}
}
V tomto příkladu matchedGeometryEffect spojuje dva Rectangle s tím samým id ("myShape") a ve stejném prostoru jmen (animation). Když se isExpanded změní, SwiftUI automaticky animuje přechod mezi dvěma stavy, vytvářející plynulý efekt změny velikosti a polohy obdélníku.