Middle
Kas ir matchedGeometryEffect un kā to izmantot SwiftUI?
sobes.tech AI
Atbilde no AI
matchedGeometryEffect ir SwiftUI modifikators, kas ļauj gludiši animēt izmaiņas izmērā un pozīcijā starp dažādiem stāvokļiem vai hierarhijām. Tas sinhronizē ģeometriju (izmēru un pozīciju) dažādās hierarhijas daļās, radot "saskaņošanas" efektu.
Lietošana:
-
idun animācijas telpas definēšana:- Jāpiešķir unikāls
idvisiem skatiem, kas jāsinhronizē, izmantojotmatchedGeometryEffectmodifikatoru. - Norādīt
namespace(vārdu telpu).namespacesasaista skatus, kas jāanimē kopā. Parasti tiek izmantota anotācija@Namespace private var namespace.
- Jāpiešķir unikāls
-
Pielietojums skatiem:
- Pielietot
matchedGeometryEffectkatram skatam, kas piedalās animācijā, norādot to pašuidunnamespace. - Mainīt skatu redzamību vai pozīciju, piemēram, izmantojot
if/elsenosacījumus vai mainot stāvokli, kas ietekmē izkārtojumu. SwiftUI automātiski animē pāreju.
- Pielietot
struct ContentView: View {
@Namespace private var animationNamespace // Vārdu telpas deklarācija
@State private var isExpanded = false
var body: some View {
VStack {
if isExpanded {
RoundedRectangle(cornerRadius: 10)
.fill(Color.blue)
.matchedGeometryEffect(id: "myShape", in: animationNamespace) // Pielietojums ar id un namespace
.frame(width: 300, height: 200)
} else {
RoundedRectangle(cornerRadius: 10)
.fill(Color.red)
.matchedGeometryEffect(id: "myShape", in: animationNamespace) // Pielietojums ar to pašu id un namespace
.frame(width: 50, height: 50)
}
Button("Toggle Size") {
withAnimation { // Izmanto arAnimation gludai pārejai
isExpanded.toggle()
}
}
}
}
}
Galvenās piezīmes:
- Tiek izmantots tas pats
idunnamespacesalīdzināmajiem skatiem. - Izmaiņas jānotiek animācijas blokā (piemēram, ar
withAnimation). - Tas ļauj veidot sarežģītus pārejas starp dažādiem izkārtojuma stāvokļiem.
- To var izmantot ar dažādiem modifikatoriem, kas ietekmē izmēru un pozīciju (
frame,padding,offsetutt.).
matchedGeometryEffect ievērojami vienkāršo sarežģītu skata transformācijas animāciju izveidi salīdzinājumā ar manuālo rēķināšanu un rāmja parametru animāciju.