Middle
Mi az a matchedGeometryEffect és hogyan használható a SwiftUI-ban?
sobes.tech MI
Válasz az MI-től
A matchedGeometryEffect egy módosító SwiftUI-ben, amely lehetővé teszi a nézet méretének és helyzetének sima animálását a különböző állapotok vagy hierarchiák közötti váltás során. Szinkronizálja a geometriai tulajdonságokat (méret és pozíció) a hierarchia különböző részein, létrehozva egy "illesztési" hatást.
Használat:
-
idés animációs tér meghatározása:- Egyedi
id-t rendel minden olyan nézethez, amelyet szinkronizálni kell, amatchedGeometryEffectmódosító segítségével. - Meg kell adni egy
namespace-t (névtér). Anamespaceösszekapcsolja azokat a nézeteket, amelyeket együtt kell animálni. Általában az@Namespace private var namespaceannotációt használják.
- Egyedi
-
Alkalmazás a nézeteken:
- Minden résztvevő nézeten alkalmazza a
matchedGeometryEffect-et, ugyanazzal azid-vel ésnamespace-szel. - Változtassa a nézetek láthatóságát vagy pozícióját, például
if/elsefeltételek vagy az állapot módosításával, amely befolyásolja a elrendezést. A SwiftUI automatikusan animálja a átmenetet.
- Minden résztvevő nézeten alkalmazza a
struct ContentView: View {
@Namespace private var animationNamespace // Névterület deklarálása
@State private var isExpanded = false
var body: some View {
VStack {
if isExpanded {
RoundedRectangle(cornerRadius: 10)
.fill(Color.blue)
.matchedGeometryEffect(id: "myShape", in: animationNamespace) // Alkalmazás id és namespace segítségével
.frame(width: 300, height: 200)
} else {
RoundedRectangle(cornerRadius: 10)
.fill(Color.red)
.matchedGeometryEffect(id: "myShape", in: animationNamespace) // Ugyanazzal az id-vel és namespace-szel
.frame(width: 50, height: 50)
}
Button("Toggle Size") {
withAnimation { // Használja a withAnimation-t a sima átmenethez
isExpanded.toggle()
}
}
}
}
}
Főbb pontok:
- Ugyanaz az
idésnamespacea kapcsolódó nézetekhez. - A változásoknak az animáció blokkban kell történniük (pl.
withAnimation-nel). - Lehetővé teszi összetett átmenetek létrehozását különböző elrendezési állapotok között.
- Különböző módosítókkal használható, amelyek befolyásolják a méretet és a pozíciót (
frame,padding,offsetstb.).
A matchedGeometryEffect jelentősen leegyszerűsíti a komplex nézettranszformációs animációk létrehozását a kézi számításokhoz képest, a keretparaméterek animálásával.