Middle
Čo je matchedGeometryEffect a ako ho použiť v SwiftUI?
sobes.tech AI
Odpoveď od AI
matchedGeometryEffect je modifikátor v SwiftUI, ktorý umožňuje plynulo animovať zmenu veľkosti a polohy zobrazenia pri prechode medzi rôznymi stavmi alebo hierarchiami zobrazení. Synchronizuje geometriu (veľkosť a polohu) zobrazení v rôznych častiach hierarchie, vytvárajúc efekt "zhody".
Použitie:
-
Definovanie
ida animačného priestoru:- Je potrebné priradiť unikátne
idvšetkým zobrazeniam, ktoré majú byť synchronizované, pomocou modifikátoramatchedGeometryEffect. - Určiť
namespace(priestor mien animácie).namespacespája zobrazenia, ktoré majú byť animované spoločne. Obvykle sa používa anotácia@Namespace private var namespace.
- Je potrebné priradiť unikátne
-
Aplikácia na zobrazenia:
- Aplikovať
matchedGeometryEffectna každé zobrazenie, ktoré sa zúčastňuje animácie, s uvedením rovnakéhoidanamespace. - Meniť viditeľnosť alebo polohu zobrazení, napríklad pomocou podmienok
if/elsealebo zmenou stavu, ktorý ovplyvňuje rozloženie. SwiftUI automaticky animuje prechod.
- Aplikovať
struct ContentView: View {
@Namespace private var animationNamespace // Vyhlásenie priestoru mien
@State private var isExpanded = false
var body: some View {
VStack {
if isExpanded {
RoundedRectangle(cornerRadius: 10)
.fill(Color.blue)
.matchedGeometryEffect(id: "myShape", in: animationNamespace) // Použitie s id a namespace
.frame(width: 300, height: 200)
} else {
RoundedRectangle(cornerRadius: 10)
.fill(Color.red)
.matchedGeometryEffect(id: "myShape", in: animationNamespace) // Použitie s rovnakým id a namespace
.frame(width: 50, height: 50)
}
Button("Toggle Size") {
withAnimation { // Použitie sAnimation pre plynulý prechod
isExpanded.toggle()
}
}
}
}
}
Kľúčové body:
- Rovnaké
idanamespacepre porovnávané zobrazenia. - Zmeny by mali prebiehať v rámci bloku animácie (napríklad s
withAnimation). - Umožňuje vytvárať zložité prechody medzi rôznymi stavmi rozloženia.
- Môže byť použitý s rôznymi modifikátormi ovplyvňujúcimi veľkosť a polohu (
frame,padding,offsetatď.).
matchedGeometryEffect výrazne zjednodušuje tvorbu zložitých animácií transformácie zobrazení v porovnaní s ručným výpočtom a animáciou parametrov rámca.