Middle
Šta je matchedGeometryEffect i kako ga koristiti u SwiftUI?
sobes.tech АИ
Одговор од АИ
matchedGeometryEffect je modifikator u SwiftUI koji omogućava glatku animaciju promene veličine i položaja prikaza prilikom prelaska između različitih stanja ili hijerarhija prikaza. On sinhronizuje geometriju (veličinu i položaj) prikaza u različitim delovima hijerarhije, stvarajući efekat "podudaranja".
Upotreba:
-
Definisanje
idi animacionog prostora:- Potrebno je dodeliti jedinstveni
idsvim prikazima koji treba da budu sinhronizovani, koristeći modifikatormatchedGeometryEffect. - Navesti
namespace(prostor imena animacije).namespacepovezuje prikaze koji treba da se animiraju zajedno. Obično se koristi anotacija@Namespace private var namespace.
- Potrebno je dodeliti jedinstveni
-
Primena na prikaze:
- Primijeniti
matchedGeometryEffectna svaki prikaz koji učestvuje u animaciji, navodeći istiidinamespace. - Menjati vidljivost ili položaj prikaza, na primer, koristeći uslove
if/elseili menjajući stanje koje utiče na raspored. SwiftUI automatski animira prelaz.
- Primijeniti
struct ContentView: View {
@Namespace private var animationNamespace // Deklaracija prostora imena
@State private var isExpanded = false
var body: some View {
VStack {
if isExpanded {
RoundedRectangle(cornerRadius: 10)
.fill(Color.blue)
.matchedGeometryEffect(id: "myShape", in: animationNamespace) // Primena sa id i namespace
.frame(width: 300, height: 200)
} else {
RoundedRectangle(cornerRadius: 10)
.fill(Color.red)
.matchedGeometryEffect(id: "myShape", in: animationNamespace) // Primena sa istim id i namespace
.frame(width: 50, height: 50)
}
Button("Toggle Size") {
withAnimation { // Korišćenje withAnimation za glatki prelaz
isExpanded.toggle()
}
}
}
}
}
Ključne tačke:
- Isti
idinamespaceza poređene prikaze. - Promene treba da se dešavaju unutar bloka animacije (npr. sa
withAnimation). - Omogućava kreiranje složenih prelaza između različitih stanja rasporeda.
- Može se koristiti sa različitim modifikatorima koji utiču na veličinu i položaj (
frame,padding,offsetitd.).
matchedGeometryEffect znatno pojednostavljuje kreiranje složenih animacija transformacije prikaza u poređenju sa ručnim izračunavanjem i animacijom parametara okvira.