Sobes.tech
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:

  1. id un animācijas telpas definēšana:

    • Jāpiešķir unikāls id visiem skatiem, kas jāsinhronizē, izmantojot matchedGeometryEffect modifikatoru.
    • Norādīt namespace (vārdu telpu). namespace sasaista skatus, kas jāanimē kopā. Parasti tiek izmantota anotācija @Namespace private var namespace.
  2. Pielietojums skatiem:

    • Pielietot matchedGeometryEffect katram skatam, kas piedalās animācijā, norādot to pašu id un namespace.
    • Mainīt skatu redzamību vai pozīciju, piemēram, izmantojot if/else nosacījumus vai mainot stāvokli, kas ietekmē izkārtojumu. SwiftUI automātiski animē pāreju.
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 id un namespace salī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, offset utt.).

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.